Java | 実務で for文 と foreach/Stream をどう使い分けるか

Java Java
スポンサーリンク

for文 vs foreach / Stream の使い分け

では「実務で for文foreach/Stream をどう使い分けるか」の判断基準を整理します。


1. インデックスが必要かどうか

  • 必要な場合 → for文
for (int i = 0; i < list.size(); i++) {
    System.out.println(i + ": " + list.get(i));
}
Java

インデックス番号を使って処理したいとき(例: 行番号付き出力、隣の要素との比較など)。

  • 不要な場合 → foreach / Stream
for (String name : list) {
    System.out.println(name);
}
Java

要素そのものだけを処理するなら foreach が最適。


2. 処理が単純か複雑か

  • 単純な繰り返し → foreach
    • 読みやすく、バグが入りにくい。
  • 条件付きや複雑な処理 → Stream
list.stream()
    .filter(s -> s.startsWith("A"))
    .map(String::toUpperCase)
    .forEach(System.out::println);
Java

条件や変換を「宣言的」に書ける。


3. パフォーマンスや制御が必要か

  • 細かい制御(break, continue, インデックス操作) → for文
for (int i = 0; i < list.size(); i++) {
    if (list.get(i).equals("STOP")) break;
    System.out.println(list.get(i));
}
Java
  • 並列処理やデータ変換 → Stream
list.parallelStream()
    .filter(s -> s.length() > 3)
    .forEach(System.out::println);
Java

4. 可読性・チーム開発の観点

  • for文: 誰でも理解できる基本形。
  • foreach: シンプルで安全、レビューで好まれる。
  • Stream: 慣れているチームなら強力だが、初心者には読みにくいこともある。

5. 実務での判断フロー

  1. インデックスが必要?
    → Yes → for文
    → No → foreach / Stream
  2. 処理が単純?
    → Yes → foreach
    → No(条件や変換が多い) → Stream
  3. 並列処理や高度な操作が必要?
    → Yes → Stream
    → No → foreach

まとめ

  • for文 → インデックスが必要、細かい制御が必要なとき
  • foreach → 要素を順に処理するだけのとき
  • Stream → 条件・変換・並列処理などを宣言的に書きたいとき

💡 実務では「まず foreach、必要なら for、もっと複雑なら Stream」という順番で選ぶと安全です。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました