Javaで配列を初期化する

Javaでの配列の初期化

1. 概要

このクイックチュートリアルでは、配列を初期化するさまざまな方法と、これらの微妙な違いについて説明します。

2. 一度に1つの要素

単純なループベースの方法から始めましょう。

for (int i = 0; i < array.length; i++) {
    array[i] = i + 2;
}

また、多次元配列を一度に1要素ずつ初期化する方法も見てみましょう。

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 5; j++) {
        array[i][j] = j + 1;
    }
}

3. 宣言時

宣言時に配列を初期化しましょう。

String array[] = new String[] {
  "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

配列をインスタンス化する際、その型を指定する必要はありません。

int array[] = { 1, 2, 3, 4, 5 };

このアプローチを使用して宣言した後、配列を初期化することはできないことに注意してください。 そうしようとすると、コンパイルエラーが発生します。

4. Arrays.fill()の使用

java.util.Arraysクラスには、fill()という名前のメソッドがいくつかあり、さまざまなタイプの引数を受け入れ、配列全体に同じ値を入力します。

long array[] = new long[5];
Arrays.fill(array, 30);

このメソッドには、配列の範囲を特定の値に設定するいくつかの選択肢もあります。

int array[] = new int[5];
Arrays.fill(array, 0, 3, -50);

このメソッドは、配列、最初の要素のインデックス、要素の数、および値を受け入れることに注意してください。

5. Arrays.copyOf()の使用

メソッドArrays.copyOf()は、別の配列をコピーして新しい配列を作成します。 メソッドには、さまざまなタイプの引数を受け入れる多くのオーバーロードがあります。

簡単な例を見てみましょう:

int array[] = { 1, 2, 3, 4, 5 };
int[] copy = Arrays.copyOf(array, 5);

ここにいくつかのメモ:

  • このメソッドは、ソース配列と作成されるコピーの長さを受け入れます

  • 長さがコピーされる配列の長さより大きい場合、余分な要素はデフォルト値を使用して初期化されます

  • ソース配列が初期化されていない場合、NullPointerExceptionがスローされます

  • ソース配列の長さが負の場合、NegativeArraySizeExceptionがスローされます

6. Arrays.setAll()の使用

メソッドArrays.setAll()は、母関数を使用して配列のすべての要素を設定します。

int[] array = new int[20];
Arrays.setAll(array, p -> p > 9 ? 0 : p);

// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

ジェネレーター関数がnullの場合、NullPointerExceptionがスローされます。

7. ArrayUtils.clone()の使用

最後に、Apache Commons Lang 3のArrayUtils.clone() APIを利用しましょう。これは、別の配列の直接コピーを作成して配列を初期化します。

char[] array = new char[] {'a', 'b', 'c'};
char[] copy = ArrayUtils.clone(array);

このメソッドは、すべてのプリミティブ型に対してオーバーロードされることに注意してください。

8. 結論

この記事では、Javaで配列を初期化するさまざまな方法について説明しました。

いつものように、コードのフルバージョンはover on GitHubで利用できます。