複製陣列

Java 提供了幾種複製陣列的方法。

for 迴圈

int[] a = { 4, 1, 3, 2 };
int[] b = new int[a.length]; 
for (int i = 0; i < a.length; i++) {
    b[i] = a[i];
}

請注意,將此選項與 Object 陣列而不是基本陣列一起使用將填充副本,並引用原始內容而不是副本。

Object.clone()

由於陣列是 Java 中的 Objects,你可以使用 Object.clone()

int[] a = { 4, 1, 3, 2 };
int[] b = a.clone(); // [4, 1, 3, 2]

請注意,陣列的 Object.clone 方法執行淺拷貝,即它返回對引用與源陣列相同元素的新陣列的引用。

Arrays.copyOf()

java.util.Arrays 提供了一種簡單的方法來執行陣列的複製。這是基本用法:

int[] a = {4, 1, 3, 2};
int[] b = Arrays.copyOf(a, a.length); // [4, 1, 3, 2]

請注意,Arrays.copyOf 還提供了一個過載,允許你更改陣列的型別:

Double[] doubles = { 1.0, 2.0, 3.0 };
Number[] numbers = Arrays.copyOf(doubles, doubles.length, Number[].class);

System.arraycopy()

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 將指定源陣列中的陣列從指定位置開始複製到目標陣列的指定位置。

下面是一個使用示例

int[] a = { 4, 1, 3, 2 };
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length); // [4, 1, 3, 2]

Arrays.copyOfRange()

主要用於複製陣列的一部分,你也可以使用它將整個陣列複製到另一個陣列,如下所示:

int[] a = { 4, 1, 3, 2 };
int[] b = Arrays.copyOfRange(a, 0, a.length); // [4, 1, 3, 2]