1. 程式人生 > >java 深度複製與淺複製 copyOf、arraycopy、copyOfRange

java 深度複製與淺複製 copyOf、arraycopy、copyOfRange

1、copyOf

  原型:public static <T> T[] copyOf(T[] original, int newLength)

  original:原陣列  newLength:要複製的長度

  Arrays.copyof()

2、arraycopy

  原型:void arraycopy(Object src, int srcPos, Object dest, int destPos, int  length)

  src:原陣列  srcPos:原陣列起始位置  dest:目標陣列  destPost:目標陣列的起始位置  length:複製長度

  System.arraycopy()

  注意:此方法要宣告一個同類型且長度足夠的陣列,否則會報異常

3、copyOfRange

  原型:public static <T,U> T[] copyOfRange(U[] original, int from, int to)

  original:原陣列  from:原陣列的起始位置  to:終點位置(不包括)

  Arrays.copyOfRange()

 最實際的應用就是List中的remove方法就是使用了arraycopy()

public E remove(int var1) {
        
this.rangeCheck(var1); ++this.modCount; Object var2 = this.elementData(var1); int var3 = this.size - var1 - 1;  //判斷是否移除最後一個元素 if (var3 > 0) { System.arraycopy(this.elementData, var1 + 1, this.elementData, var1, var3);  //將要移除元素後面的元素往前移 } this
.elementData[--this.size] = null;  //clear to let GC do its work
     return var2; 
}