2009-08-31 14 views
26

czy zrobić to w Java:Java: ile razy jest wyrażenie kolekcji oceniane w „foreach”

for(String s : myCollection.expensiveListGeneration()) 
{ 
     doSomething(); 
} 

jest expensiveListGeneration() wywoływana tylko raz na początku działalności lub w każdej iteracji cyklu?

Czy zależy od wdrożenia?

+0

możliwy duplikat [wydajność foreach Java] (http://stackoverflow.com/questions/904582/java-foreach-efficiency) –

Odpowiedz

33

ponieważ jest to równoważne użyciu iteratora, to odpowiednik wywoływania kolekcji. iterator() Metoda ta jest wywoływana raz.

19

Jest wywoływana raz, a nie zależna od implementacji. Pętla for-each oparta jest na interfejsie Iterable. Wystarczy tylko raz wywołać metodę kolekcji iterator(), a następnie pracować z tym iteratorem.

+0

ah, odpowiedział w tym samym czasie heh :) – Chii

Powiązane problemy