zoukankan      html  css  js  c++  java
  • 集合源码基础之数组扩容技术

    集合源码基础之数组扩容技术

    数组复制1:Arrays.copyOf(Object[] objects, int length)

    Arrays.copyOf(Object[] objects, int length)功能是实现数组的复制,返回复制后的数组。参数为被复制的数组和复制的长度(复制之后不足的按照null填充)。

    package top.flygrk.ishare.list.test;
    
    import java.util.Arrays;
    
    /**
     * @Author: flygrk
     * @Version: 1.0
     * @Description: 数组扩容技术
     */
    public class ArrayCopy {
    
        public static void main(String[] args) {
            Object[] objects = {1, 2};
            System.out.println("当前数组长度: " + objects.length);
    
            //返回新的数组,将原来的长度为2的数组,现在扩容到10, 原来本身的数据不变
            Object[] copyNewObjects = Arrays.copyOf(objects, 10);
            System.out.println("copyNewObjects: " + copyNewObjects.length);
    
        }
    
    }
    

    数组复制2:System.arraycopy(Object src, int srcPos,Object dest, int destPos,int length);

    System.arraycopy()方法如果是数组比较大,那么使用System.arraycopy()会比较有优势,因为其使用的是内存复制,省去了大量的数组寻址访问等时间。复制指定源数组src到目标数组dist。复制从源数组src的srcPos索引开始,复制长度为length,复制到dest数组的开始索引为destPos。

    package top.flygrk.ishare.list.test;
    
    import java.util.Arrays;
    
    /**
     * @Author: flygrk
     * @Version: 1.0
     * @Description: 数组扩容技术
     */
    public class ArrayCopy {
    
        public static void main(String[] args) {
    
            int[] fun = {0, 1, 2, 3, 4, 5, 6};
    
    
            System.arraycopy(fun, 0, fun, 3, 3);
    
            for (int i: fun) {
                System.out.print(i + " ");
            }
    
        }
    
    }
    
    //运行结果: 0 1 2 0 1 2 6 
    
    • System.arraycopy() 源码:
    /**
     * @Description: 数组复制
     * @Param src: 源数组
     * @Param srcPos: 源数组复制开始的下标
     * @Param dest: 目标数组
     * @Param destPos: 目标数组存放的开始下标
     * @Param length: 复制长度
     */
    public static native void arraycopy(
        Object src, int srcPos, Object dest,
        int destPos, int length
    );
    
    

    注意: 上述代码,如果复制的length超越了(数组的长度-起始位置的长度),那么就会提示数组下标越界异常。


    Blog:

  • 相关阅读:
    几种编辑器的markdown-toc生成目录在github上的表现
    Docker 镜像文件的导入和导出
    Python 的 os 与 sys 模块
    IPython 自动重载魔术
    一种新的python局部调试手法
    Python 动态从文件中导入类或函数的方法
    python2中新式类和经典类的多重继承调用顺序
    Python运行目录或压缩文件
    子类化内置类型
    Django 数据库访问性能优化
  • 原文地址:https://www.cnblogs.com/zhiyouwu/p/11605990.html
Copyright © 2011-2022 走看看