Java で配列をコピーする

Rupam Yadav 2023年10月12日
  1. Java で Arrays.copyOf() を使って配列を別の配列にコピーする
  2. Java の System.arraycopy() を用いて配列を別の配列にコピーする
  3. Java の clone() を用いて二次元配列を別の配列にコピーする
Java で配列をコピーする

このチュートリアルでは、Java で配列を別の配列にコピーするいくつかのメソッドを紹介します。ループを使った手動のアプローチを使用することもできますが、単純化のためにそのような方法は使わないようにしたいと思いますし、車輪の再発明はしたくありません。

Java で Arrays.copyOf() を使って配列を別の配列にコピーする

指定した配列を新しい配列にコピーする Arrays クラスの copyOf() メソッドを利用することができます。copyOf() は 2つの引数をとります。1つ目はコピーする配列で、2つ目は新しい配列の長さです。

下の例では、array1array2 にコピーします。新しい配列の長さは 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つの引数をとり、コピーする配列 array1array1 の開始位置、新しい配列 array2array2 の開始位置、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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

関連記事 - Java Array