Java 拡張 for 文(for-each):カウンターなしで配列反復をシンプルに
Java でコレクションを扱うとき、for-each ループは従来のインデックス付き for ループに代わる簡潔で読みやすい選択肢です。手動のインデックス管理を排除することで、ボイラープレートとオフバイワンエラーを減らします。
構文
for (データ型 要素 : コレクション) {
// 要素を処理
}
実践例
以下では String 配列を従来の for ループと for-each ループの両方で反復処理し、違いを強調します。
配列宣言:
String[] arrData = {"Alpha", "Beta", "Gamma", "Delta", "Sigma"};
従来の for ループ
for (int i = 0; i < arrData.length; i++) {
System.out.println(arrData[i]);
}
for-each ループ
for (String element : arrData) {
System.out.println(element);
}
for-each 版ではインデックス変数が不要になり、「各アイテムを処理する」という意図がクリスタルクリアになります。
覚えておくべきポイント
- ループで宣言する型は、配列またはコレクションの要素型と一致しなければならない
- for-each ループは読み取り専用の走査に最適。コレクション構造の変更(反復中の要素削除など)が必要な場合は使用不可
- ほとんどのユースケースでパフォーマンス差は無視できるレベル。可読性で選択すべき
完全なクラス例
class UsingForEach {
public static void main(String[] args) {
String[] arrData = {"Alpha", "Beta", "Gamma", "Delta", "Sigma"};
System.out.println("Using conventional For Loop:");
for (int i = 0; i < arrData.length; i++) {
System.out.println(arrData[i]);
}
System.out.println("\nUsing Foreach loop:");
for (String element : arrData) {
System.out.println(element);
}
}
}

出力
Using conventional For Loop: Alpha Beta Gamma Delta Sigma Using Foreach loop: Alpha Beta Gamma Delta Sigma
両ループとも同じ結果ですが、for-each ループはより少ないコードで、エラーの可能性も少なく同じことを実現します。
Java
- C# for ループをマスターする:構文、フロー、実践例
- C言語forループ完全マスター:構文、仕組み、実践例
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java配列コピー技法:包括的ガイド
- Javaオブジェクト配列の作成:ステップバイステップガイド
- Java String.charAt()完全解説:構文、戻り値、例外、実例
- Javaでアームストロング数を判定・列挙するプログラム
- Javaで回文数を判定する:while文とfor文を使ったアルゴリズム
- Javaでバブルソートをマスター:わかりやすい例とステップバイステップ解説
- Javaで選択ソート:ステップバイステップ例と完全コード
- Java 10のガベージコレクターインターフェースとG1並列フルGCでメモリ管理を効率化