JavaのArrays.fillは 一次元配列専用 なので、二次元以上の配列を扱うときは「行ごと」に処理します。
つまり、多次元配列の一部を埋めたいときは、対象の行を選んで Arrays.fill を使うのが基本です。
基本の考え方
int[][] grid = new int[3][4]; // 3行4列の二次元配列
Arrays.fill(grid[1], 7); // 2行目(添え字1)の全要素を7に
Java結果
[
[0, 0, 0, 0],
[7, 7, 7, 7],
[0, 0, 0, 0]
]
部分的に埋める(範囲指定)
一次元配列と同じように、行を指定して範囲を埋められます。
int[][] grid = new int[3][5]; // 3行5列
Arrays.fill(grid[0], 1, 4, 9); // 1行目の添え字1~3を9に
Java結果
[
[0, 9, 9, 9, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
]
複数行をまとめて埋める
for文を使って、複数行に同じ処理を繰り返せます。
int[][] grid = new int[4][4]; // 4行4列
for (int i = 0; i < 2; i++) { // 先頭2行だけ処理
Arrays.fill(grid[i], 5); // 各行を5で埋める
}
Java結果
[
[5, 5, 5, 5],
[5, 5, 5, 5],
[0, 0, 0, 0],
[0, 0, 0, 0]
]
応用例:チェス盤風に初期化
int[][] board = new int[8][8];
// 偶数行は全部1、奇数行は全部2
for (int i = 0; i < board.length; i++) {
if (i % 2 == 0) {
Arrays.fill(board[i], 1);
} else {
Arrays.fill(board[i], 2);
}
}
Java出力イメージ
[1,1,1,1,1,1,1,1]
[2,2,2,2,2,2,2,2]
[1,1,1,1,1,1,1,1]
...
✅ まとめ
- 多次元配列は「行ごと」に処理する
- 部分的に埋めたいときは
Arrays.fill(grid[row], start, end, value)を使う - 複数行ならfor文で繰り返す
