Java で配列をコピーする
-
Java で
Arrays.copyOf()
を使って配列を別の配列にコピーする -
Java の
System.arraycopy()
を用いて配列を別の配列にコピーする -
Java の
clone()
を用いて二次元配列を別の配列にコピーする
このチュートリアルでは、Java で配列を別の配列にコピーするいくつかのメソッドを紹介します。ループを使った手動のアプローチを使用することもできますが、単純化のためにそのような方法は使わないようにしたいと思いますし、車輪の再発明はしたくありません。
Java で Arrays.copyOf()
を使って配列を別の配列にコピーする
指定した配列を新しい配列にコピーする Arrays
クラスの copyOf()
メソッドを利用することができます。copyOf()
は 2つの引数をとります。1つ目はコピーする配列で、2つ目は新しい配列の長さです。
下の例では、array1
を array2
にコピーします。新しい配列の長さは array1
と同じです。新しい配列のサイズが古い配列よりも大きい場合、空のインデックスはすべて 0 で埋められます。ループを使って新しい配列の項目とそのインデックスを表示しました。
import java.util.Arrays;
public class CopyArray {
public static void main(String[] args) {
int[] array1 = new int[] {2, 4, 6, 8, 10};
int[] array2 = Arrays.copyOf(array1, array1.length);
for (int i = 0; i < array2.length; i++) {
System.out.println("array2 position " + i + ": " + array2[i]);
}
}
}
出力:
array2 position 0: 2
array2 position 1: 4
array2 position 2: 6
array2 position 3: 8
array2 position 4: 10
Java の System.arraycopy()
を用いて配列を別の配列にコピーする
System.arraycopy()
は、古い配列のサブアイテムを用いて新しい配列を作成したいときに便利です。
System.arraycopy()
は少なくとも 4つの引数をとり、コピーする配列 array1
、array1
の開始位置、新しい配列 array2
、array2
の開始位置、array2
にコピーする項目の数を指定します。出力は、array2
にコピーされた項目を表示します。
public class CopyArray {
public static void main(String[] args) {
String[] array1 = new String[] {"Adam", "Claire", "Dave", "Greg", "Halsey", "Jane", "Kylie"};
String[] array2 = new String[array1.length];
System.arraycopy(array1, 0, array2, 0, array1.length);
for (int i = 0; i < array2.length; i++) {
System.out.println("array2 position " + i + ": " + array2[i]);
}
}
}
出力:
array2 position 0: Adam
array2 position 1: Claire
array2 position 2: Dave
array2 position 3: Greg
array2 position 4: Halsey
array2 position 5: Jane
array2 position 6: Kylie
Java の clone()
を用いて二次元配列を別の配列にコピーする
Java で配列をコピーする最後のメソッドは clone()
であり、コピーした配列の項目を含む新しい配列を返します。この例では、8つの要素を持つ 2 次元の配列 array1
を用いています。配列をコピーするには array1.clone()
を使用して、新しい配列 array2
の要素を出力するには 2つのループを使用します。
public class CopyArray {
public static void main(String[] args) {
int[][] array1 = {{10, 20}, {30, 40}, {50, 60}, {70, 80}};
int[][] array2 = array1.clone();
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2[i].length; j++) {
System.out.println("array2 position [" + i + "][" + j + "] : " + array2[i][j]);
}
}
}
}
出力:
array2 position [0][0] : 10
array2 position [0][1] : 20
array2 position [1][0] : 30
array2 position [1][1] : 40
array2 position [2][0] : 50
array2 position [2][1] : 60
array2 position [3][0] : 70
array2 position [3][1] : 80
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn