2. 拡張for文
2005.11.07 株式会社四次元データ CTO 畠中晃弘
Java言語機能(JDK5.0(Tiger)新機能) 2章 拡張for文
- 2.1. 拡張for文
- 2.2. java.lang.Iterable
2.1. 拡張for文
拡張for文は、for文を拡張した新しい構文です。 配列および全てのコレクションクラスに対して適応することができます。 例えば以下のようなStringを格納したArrayListを考えます。
List<String> list = new ArrayList<String>(); list.add("京都"); list.add("大阪"); list.add("神戸");
この要素を1つずつ取り出して標準出力に出力する場合、これまでのfor文を用いれば、例えば以下のようになりました。
for(Iterator<String> iterator=list.iterator(); iterator.hasNext(); ){ System.out.println(iterator.next()); }
これを拡張for文を用いて記述すると、以下のようになります。
for(String city : list){ System.out.println(city); }
非常に簡単に記述することができます。 拡張for文の文法を以下に示します。
for(型 変数名 : 式){ 文 }
式の部分には、以下のいずれかを返す式を記述します。
- 配列
- 次の節で説明する「java.lang.Iterable」インタフェースを実装したクラスのインスタンス
java.util.Setやjava.util.Listのインスタンスなど
他の点ではこれまでのfor文と同じです。 宣言した変数はforループ内でのみ使用することができます。 またjava.util.Setやjava.util.ListはIterableインタフェースのサブクラスですので、これらを実装したコレクションクラスを拡張for文で使用することができます。
非常に便利な拡張for文ですが、これまでの通常のfor文でできることを全て実現できるわけではありません。 配列やコレクションクラスの要素を、1つずつ先頭から取得することができるだけです。 つまり後ろから順に取得することや、1つ飛ばしに取得することなどはできません。 そういった場合には、通常のfor文を使用してください。