Java | 配列の全部(または一部)を同じ値で一気に埋める

Java Java
スポンサーリンク

Javaの配列とArrays.fillの基本

初心者向けに一言で言うと、Arrays.fillは「配列の全部(または一部)を同じ値で一気に埋める魔法の道具」です。for文で1つずつ代入するより、短くて読みやすく、ミスも減ります。


配列の初期値ってなに?

  • 数字の配列: 作った瞬間は全部0
  • booleanの配列: 作った瞬間は全部false
  • 文字列やオブジェクトの配列: 作った瞬間は全部null

例:

int[] nums = new int[3];      // [0, 0, 0]
boolean[] flags = new boolean[2]; // [false, false]
String[] names = new String[2];   // [null, null]
Java

Arrays.fillで「全部同じ」にする

  • 基本形: Arrays.fill(配列, 値); — 配列の全要素をその値にする
  • 必要な準備: 先頭で import java.util.Arrays; を書く

例:

import java.util.Arrays;

int[] scores = new int[5];      // [0, 0, 0, 0, 0]
Arrays.fill(scores, 10);        // [10, 10, 10, 10, 10]
Java

一部だけを埋めることもできる

  • 範囲指定: Arrays.fill(配列, start, end, 値);
  • 注意点: startは含む、endは含まない(0から始まる)

例:

import java.util.Arrays;

int[] a = new int[]{0, 0, 0, 0, 0}; // 初期状態
Arrays.fill(a, 1, 4, 7);            // 添え字1〜3を7にする
// 結果: [0, 7, 7, 7, 0]
Java

よくある実用例

  • ゲームのスコアをリセット: 全部0に
import java.util.Arrays;

int[] scores = new int[10];
Arrays.fill(scores, 0);
Java
  • フラグの初期化: 全部falseに
import java.util.Arrays;

boolean[] seen = new boolean[100];
Arrays.fill(seen, false);
Java
  • 配列の前半だけ準備: 前半を1、後半を0に
import java.util.Arrays;

int[] bits = new int[8];           // [0,0,0,0,0,0,0,0]
Arrays.fill(bits, 0, 4, 1);        // 前半4つを1に
// 結果: [1,1,1,1,0,0,0,0]
Java

例題で練習しよう

例題1:全要素を同じ値にする

  • 課題: 長さ5のint配列を作り、全てを「42」にする。
  • 解答コード:
import java.util.Arrays;

int[] nums = new int[5];
Arrays.fill(nums, 42);
// numsは [42, 42, 42, 42, 42]
Java

例題2:一部だけを埋める

  • 課題: 長さ6の配列のうち、添え字2〜5の手前(つまり2,3,4)を9に。
  • 解答コード:
import java.util.Arrays;

int[] a = new int[6];         // [0,0,0,0,0,0]
Arrays.fill(a, 2, 5, 9);      // 2,3,4番目が9
// aは [0,0,9,9,9,0]
Java

例題3:初期化+部分上書き

  • 課題: まず全体を-1で埋め、次に先頭3つを0にする。
  • 解答コード:
import java.util.Arrays;

int[] data = new int[7];
Arrays.fill(data, -1);        // [-1,-1,-1,-1,-1,-1,-1]
Arrays.fill(data, 0, 3, 0);   // 先頭3つを0に
// 結果: [0,0,0,-1,-1,-1,-1]
Java

つまずきポイントとコツ

  • 範囲の終端は含まない: start は含む、end は含まない。Arrays.fill(a, 1, 4, x) は1,2,3だけ。
  • インポート忘れに注意: 毎回 import java.util.Arrays; を入れる。
  • 多次元配列は一気に埋められない: int[][] などは行ごとにfillする必要がある。
import java.util.Arrays;

int[][] grid = new int[3][3];
for (int i = 0; i < grid.length; i++) {
    Arrays.fill(grid[i], 5);  // 各行を5で埋める
}
Java

まとめ

  • 全部同じ値にしたいときはArrays.fillが最短・安全。
  • 一部だけなら範囲指定版で「start含む・end含まない」を守る。
  • 多次元は行ごとにfill。

次に進むなら、Arrays.fillと組み合わせてArrays.equalsやArrays.toString、Arrays.copyOfも覚えると配列操作がグッと楽になります。

タイトルとURLをコピーしました