従来のfor文よりもfor-each文を使う


従来のfor文よりもfor-each文の方が簡潔です.for-each文は、Iterableインタフェースを実装した任意のオブジェクトを巡回することができます.次のコードを見てください.
enum Face { ONE, TWO, THREE, FOUR, FIVE, SIZ }
...
Collection<Face> faces = EnumSet.allOf(Face.class);

for(Iterator<Face> i = faces.iterator(); i.hasNext(); )
	for(Iterator<Face> j = faces.iterator(); j.hasNext(); )
		System.out.println(i.next() + " " + j.next());
i.next()の呼び出しが続くため、結果値は「ONE」から「SIX SIX」が出力される.これは意図的ではない.上記のコードを解決するには、外部要素を外部重複文に格納する変数を追加する必要があります.
for(Iterator<Face> i = faces.iterator(); i.hasNext(); ) {
	Face face = i.next();
	for(Iterator<Face> j = faces.iterator(); j.hasNext(); )
		System.out.println(face + " " + j.next());
	}
for文を重ねることで,この問題は簡単に解決できる.コードも非常に簡単になりました.
for(Face face1 : faces)
	for(Face face2 : faces)
		System.out.println(face1 + " " + face2);
ただし、for-each文が使用できない場合もあります.
  • 破壊性濾過(破壊性濾過)
  • セットを巡回して選択した要素を削除する必要がある場合は、重複者の削除方法を呼び出す必要があります.Java 8からCollectionのremoveIFメソッドによる集合の明示的な遍歴は回避できる.
  • 変形
    要素の一部またはすべての値を
  • 個または配列を巡回するときに置き換える必要がある場合は、リストの重複者または配列のインデックスを使用する必要があります.
  • パラレル反復(パラレル反復)
  • の複数のセットを並列に巡回する必要がある場合は、各重複項目とインデックス変数を使用して厳格で明確な制御を行う必要があります.
  • 従来のfor文に比べて、for-each文はより明確で柔軟であり、エラーを予防することができます.
    性能も落ちていません.for文ではなく、可能な限りfor-each文を使用します.