多次元配列を埋める方法は?
int[][] array = new int[4][6];
Arrays.fill(array, 0);
試しましたが、うまくいきません。
for-eachを使用した提案は次のとおりです。
for (int[] row : array)
Arrays.fill(row, 0);
あなたはそれが動作することを確認することができます
System.out.println(Arrays.deepToString(array));
補足:配列を作成しているので、塗りつぶしの直前に、実際には塗りつぶしは必要ありません(本当にゼロが必要な場合)。Javaは、すべての配列要素を対応するデフォルト値に初期化しますint
。これは0です:-)
これを試して:
for(int i = 0; i < array.length; i++) {
Arrays.fill(array[i], 0);
}
私はそれをテストしていませんが、うまくいくはずだと思います。
配列は実際には配列の配列であるため、各行をループして、各行を個別に塗りつぶすことができます。
まず、0
は int 配列のデフォルト値であるため、何かを 0 で埋める必要はありません。
配列を真に多次元のままにしたい場合は、ループが必要になります。
public static void fill(int[][] array, int element) {
for(int[] subarray : array) {
Arrays.fill(subarray, element);
}
}
同じ要素で満たされた 2D 配列のみが必要で、後でサブ配列を変更したくない場合は、次のトリックを使用できます。
public static int[][] create2DArray(int length, int subLength, int element) {
int[] subArray = new int[subLength];
Arrays.fill(subArray, element);
int[][] array = new int[length][];
Arrays.fill(array, subArray);
return array;
}
これは、高次元の配列に対しても同様に機能します。
この方法を参照してください:
Arrays.fill(array[0], 0);
Arrays.fill(array, array[0]);