58.従来のforループより、for-eachのループを選択すべき
- 従来のfor文のほうが記述すべきことが多くて、ミスが発生する確率が上がる。
- 入れ子のイテレーションがあるときもfor-eachが使える。
package tryAny.effectiveJava;
import java.util.Arrays;
import java.util.Collection;
public class NestedFor {
enum Suit {
CLUB, DIAMOND, HEART, SPADE
};
enum Rank {
ACE, DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING
};
public static void main(String[] args) {
Collection<Suit> suits = Arrays.asList(Suit.values());
Collection<Rank> ranks = Arrays.asList(Rank.values());
for (Suit suit : suits) {
for (Rank rank : ranks) {
System.out.println("柄" + suit + ":数" + rank);
}
}
}
}
-
一般的にfor-eachが使えない場面が3つある。
-
フィルタリングして特定の要素を削除する場合
-
要素の値を変換する場合
-
複数の要素集合を、並列で走査する場合
-
-
Iterableをimplementsしているオブジェクトに対してfor-eachで要素を取り出すことができる。