Java | for文のネスト(入れ子)処理

Java Java
スポンサーリンク

では、
テーマ:「for文のネスト(入れ子)処理」を、
プログラミング初心者向けにかみ砕いた テキスト教材スタイル(ASCII図+コード+表)
で解説します。


for文のネスト(入れ子)とは

ある for 文の中に、もう1つの for 文を入れることを
「for文のネスト(入れ子)」 といいます。

for (外側のカウンタ) {
    for (内側のカウンタ) {
        // 内側の処理
    }
}
Java

ネストを使うと、「二重の繰り返し処理」ができます。
例えば、行と列を使って「表」や「九九表」などを作るときに便利です。


イメージ図(処理の流れ)

外側for → 内側for
↓
+--- 外側1回目(i=1)
|   +-- 内側1回目(j=1)
|   +-- 内側2回目(j=2)
|   +-- ...
|
+--- 外側2回目(i=2)
|   +-- 内側1回目(j=1)
|   +-- 内側2回目(j=2)
|   +-- ...
|
...(繰り返し)

外側が1回動くたびに、内側が全部まわるイメージです。


基本例:九九表の出力

public class NestedForExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {          // 外側:段(1〜9)
            for (int j = 1; j <= 9; j++) {      // 内側:掛ける数(1〜9)
                System.out.print(i * j + "\t"); // 結果をタブ区切りで表示
            }
            System.out.println();               // 改行
        }
    }
}
Java

🖥 出力結果(抜粋):

1	2	3	4	5	6	7	8	9
2	4	6	8	10	12	14	16	18
3	6	9	12	15	18	21	24	27
...

ステップ解説

ステップi(外側)j(内側)出力備考
1111×1=1外側1回目、内側1回目
2121×2=2内側2回目
191×9=9内側9回目終了
10212×1=2外側2回目、内側再スタート

実務でよくあるネストforの使い方

シーン説明
二次元データ処理配列や行列を扱うint[][] matrix の全要素を走査
ファイル入出力行×列のデータ整形CSVやExcel出力時の整形
組み合わせチェック2つのリストを全パターン照合商品×クーポンの組合せ検索
テーブル描画HTMLやコンソール出力表形式の出力処理

実務サンプル:二次元リスト処理

List<List<String>> table = List.of(
    List.of("山田", "営業", "東京"),
    List.of("佐藤", "開発", "大阪"),
    List.of("田中", "総務", "名古屋")
);

for (List<String> row : table) {        // 外側:行(人)
    for (String col : row) {            // 内側:列(情報)
        System.out.print(col + "\t");   // 各要素を出力
    }
    System.out.println();               // 改行
}
Java

🖥 出力結果:

山田	営業	東京
佐藤	開発	大阪
田中	総務	名古屋

注意点(アンチパターン)

パターン問題点改善方法
ネストが3重以上可読性・保守性が下がるメソッド分割 or Stream利用
インデント深すぎロジックが見づらい早期return・continueの活用
無駄なループパフォーマンス悪化条件を外側で絞る

まとめ

  • forの中にforを入れる → 「ネスト」
  • 外側が1回動くと内側は全ループする
  • 二次元データ・表・組合せ処理で頻出
  • ネストが深いときは分割を検討
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました