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

Java Java
スポンサーリンク

逆順処理の比較

では「同じ処理を逆順で書いた場合」の for / foreach / Stream の比較をまとめます。


例題

リストの要素を 逆順 に出力する。


1. for文(従来型)

List<String> names = List.of("Alice", "Bob", "Charlie");

for (int i = names.size() - 1; i >= 0; i--) {
    System.out.println(names.get(i));
}
Java
  • 特徴: インデックスを直接操作できるので逆順が簡単。
  • 実務での評価: 最も分かりやすく、誰でも理解できる。

2. foreach文(拡張for)

List<String> names = List.of("Alice", "Bob", "Charlie");

// foreach は逆順に直接対応できないので工夫が必要
List<String> reversed = new ArrayList<>(names);
Collections.reverse(reversed);

for (String name : reversed) {
    System.out.println(name);
}
Java
  • 特徴: foreach 自体は逆順に対応していない。
  • 実務での評価: Collections.reverse() を組み合わせれば安全に書ける。

3. Stream API

List<String> names = List.of("Alice", "Bob", "Charlie");

IntStream.iterate(names.size() - 1, i -> i >= 0, i -> i - 1)
         .mapToObj(names::get)
         .forEach(System.out::println);
Java
  • 特徴: IntStream.iterate を使って逆順のインデックスを生成。
  • 実務での評価: 宣言的に書けるが、やや冗長。

まとめ

方法メリットデメリット実務での使いどころ
for文シンプルで直感的、境界条件が明確インデックス管理が必要逆順処理の基本形
foreach安全で読みやすい逆順は直接できない、Collections.reverse が必要コレクションを逆順に処理したいとき
Stream宣言的に書ける、柔軟初心者には読みにくい、少し冗長モダンなコードベースや並列処理を意識する場合

💡 実務では「逆順処理」は for文が最も分かりやすく安全
ただし、読みやすさ重視なら foreach + Collections.reverseモダンな書き方なら Stream という選択肢もあります。

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