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で利用できます。