java System.arrayCopy使用说明

2017-07-21  本文已影响11人  耳_总
 public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

这是一个native方法最终交给jni层处理,用来拷贝数组
参数说明:

列子:

int[] original = {0,1,2,3,4,5,6,7,8,9};
int[] copy = {0,1,2,3,4,5,6,7,8,9,0,0};
System.arraycopy(original, 4, copy, 5, original.length-4);
copy[4] = 123; 
for(int item:copy) {
  System.out.print(item + ",");
}

将数组original数据的第4个位置开始拷贝,一共拷贝length-4个数组,依次从copy数组第五个开始存放。
输出:
0,1,2,3,123,4,5,6,7,8,9,0

这个就是ArrayList.add(index , E) 的实现原理:

public void add(int index, E element) {
        rangeCheckForAdd(index);

        ensureCapacityInternal(size + 1);  // Increments modCount!!
        System.arraycopy(elementData, index, elementData, index + 1,
                         size - index);
        elementData[index] = element;
        size++;
    }

ArrayList在插入数据的时候先要进行扩容(如果有需要),然后拷贝数组,所以说ArrayList如果有频繁插入和删除的操作的话会非常消耗性能的,建议使用LinkedList。LinkedList是一个双向链表结构,插入数据快,查找数据慢。

上一篇 下一篇

猜你喜欢

热点阅读