拡張for

Revised: May/06th/2008

J2SE 5.0以上で、拡張for文という構造が追加されました。この構造は、for-eachループとも呼ばれます。リストの各要素へのアクセスを簡単に書けます。for-each構造のシンタックスは次の通りです。

EnhancedForStatement:
        for ( VariableModifiersopt Type Identifier: Expression) Statement

例えば、次の例では、「myArray内の各elem毎に」ループします。

for (Elem elem : myArray) {
	// elemに対する処理
}

配列の場合は次のようになります。

class TestForIn {
	public static void main(String[] args) {
		String[] strs = new String[] {"un", "due", "trois", "quatre", "cinq",
			"six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize"};
		for (String s : strs) {
			System.out.print(s + "; ");
		}
	}
}

このサンプルでは、strsオブジェクトの各要素が変数sに代入されて、全ての要素を参照し終わるまで繰り返されます。

D:\java>javac TestForIn.java

D:\java>java TestForIn
un; due; trois; quatre; cinq; six; sept; huit; neuf; dix; onze; douze; treize;
D:\java>

拡張for文は、配列やコレクションオブジェクトの各要素への網羅的なアクセスを容易にします。最も威力を発揮するのが、コレクション・オブジェクトへの参照です。拡張for文を使わない(使えない)場合は、Iterator型オブジェクトのメソッドnext()を利用することになります。コレクション・クラスでの拡張for文の利用例は、コレクション・クラスのページを参照してください。



Copyright © 2008 SUGAI, Manabu. All Rights Reserved.