Więcej
Jak działa pętla Java 'for each'?
Zastanów się:
List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
for (String item : someList) {
System.out.println(item);
}
Jak wyglądałaby równoważna pętla for
bez użycia składni for each?
1437
3
Zauważ, że jeśli musisz użyć
i.remove();
w swojej pętli, lub uzyskać dostęp do rzeczywistego iteratora w jakiś sposób, nie możesz użyć idiomufor ( : )
, ponieważ rzeczywisty iterator jest jedynie wnioskowany.Jak zauważył Denis Bueno, ten kod działa dla każdego obiektu, który implementuje interfejs
Iterable
.Również, jeśli prawa strona idiomu
for (:)
jestarray
a nie obiektemIterable
, wewnętrzny kod używa licznika indeksu int i sprawdza względemarray.length
zamiast tego. Zobacz Specyfikacja języka Java.Pętla for-each w Javie wykorzystuje bazowy mechanizm iteratorów. Jest więc identyczna jak poniższa:
Oto równoważne wyrażenie.