2009-08-31 6 views
26

si hago esto en Java:java: ¿cuántas veces es la expresión recogida evaluado en un "foreach"

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

es expensiveListGeneration() invoca una sola vez al beggining o en cada iteración del ciclo?

¿Depende de la implementación?

+0

posible duplicado de [Java foreach efficiency] (http://stackoverflow.com/questions/904582/java-foreach-efficiency) –

Respuesta

33

porque es equivalente a usar un iterador, es equivalente a llamar a las colecciones '. método iterator(), y se llama una vez.

19

Se invoca una vez y no depende de la implementación. El ciclo for-each se basa en la interfaz Iterable. Todo lo que hace es llamar al método iterator() de la colección una vez al principio, y luego trabaja con ese iterador.

+0

ah, respondió al mismo tiempo heh :) – Chii

Cuestiones relacionadas