Java for-eachループは、リストで呼び出された場合、要素が順番に表示されることを保証しますか?すべてのドキュメントで
List<Integer> myList;// [1,2,3,4]
for (Integer i : myList) {
System.out.println(i.intValue());
}
#output
1,2,3,4
はい。 foreachループは、iterator()
メソッドで指定された順序でリストを反復処理します。 Iterableインターフェイスのドキュメント を参照してください。
ListのJavadoc を見ると、リストが「順序付きコレクション」であり、iterator()
メソッドが「適切な順序で」反復する反復子を返すことがわかります。
foreach
ループはCollection
に組み込まれたイテレーターを使用するため、結果を取得する順序は、Collection
が要素に対して何らかの順序を維持するかどうかによって異なります。
したがって、ArrayList
をループしている場合は、アイテムが挿入された順序で取得されます(ArrayListをソートしなかった場合)。 HashSet
をループしている場合、HashSetは順序を維持しないため、すべてのベットはオフになります。
コレクション内の要素の順序を保証する必要がある場合は、その順序を確立するComparator
を定義し、Collections.sort(Collection<T>, Comparator<? super T>)
を使用します。
はい、Java言語仕様により、
for (Iterator<Whatever> i = c.iterator(); i.hasNext(); )
whatEver(i.next());
と同等です
for (Whatever x : c)
whatEver(x);
「順序の変更」は許可されていません。
Forループ、la for (int i = 0; i < myList.length(); i++)
を順序どおりに使用したい場合に使用できます。ただし、私が知る限り、foreachは順番に実行する必要があります。