for文Revised: May/06th/2008
J2SE 5.0以上で、拡張for文という構造が追加されました。この構造は、for-eachループとも呼ばれます。リストの各要素へのアクセスを簡単に書けます。for-each構造のシンタックスは次の通りです。
EnhancedForStatement:
for ( VariableModifiersopt Type Identifier: Expression) Statement
Expressionはループさせたい集合を指定します。配列オブジェクト、もしくはコレクション・オブジェクト(インタフェースIterableを実装するオブジェクト)を指定できます。Identifierは、各要素を代入する変数であり、このfor-eachブロック内で参照します。例えば、次の例では、「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文の利用例は、コレクション・クラスのページを参照してください。