java中 System.arraycopy() 和 Arrays.copyOf()拷贝方式

System.arraycopy()- - 奶思的方法

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

参数:

  • src : 原数组
  • srcPos : 原数组中的起始位置
  • dest : 目标数组
  • destPos : 目标数组的起始位置
  • length :拷贝的长度
  • 如果 src或 dest是 null - -NullPointerException

今日受益地方- - 顺序表(中间插入)

public boolean add(int index, int element) {
    if(index<0||index>size){
        System.out.println("下标非法");
        return false;
    }
    System.arraycopy(array,index,array,index+1,size-index);
    array[index]=element;
    size++;
    return true;
}

删除某一下标处元素

public int remove(int index) {
    int oldVal=array[index];
    System.arraycopy(array,index+1,array,index,size-index-1);
    return oldVal;
}

比之前用到的for循环简洁,效率高

    for(int i=size;i

Arrays.copyOf()

public static int[] copyOf(int[] original,
                           int newLength)
  • original 要复制的数组
  • newLength 新的数组长度

今日用到地方

private void ensureCapacity() {
    if (size < array.length) {
        return;
    }
    int newCapacity = array.length + array.length / 2;
    Arrays.copyOf(array,newCapacity);
}

效率

  • Arrays.copyOf ()重新创建数组,还调用System.arraycopy()
  • System.arraycopy()效率高

你可能感兴趣的:(java中 System.arraycopy() 和 Arrays.copyOf()拷贝方式)