2009-08-31 36 views
26

評估如果我這樣做在Java中收集表達式:的java:有多少次是在「的foreach」

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

是expensiveListGeneration()在beggining或在每個週期反覆調用只有一次?

它是否依賴於實現?

+0

可能重複[Java foreach效率](http://stackoverflow.com/questions/904582/java-foreach-efficiency) – 2010-12-05 00:14:01

回答

33

因爲它相當於使用迭代器,所以相當於調用集合'。 iterator()方法,它被調用一次。

19

它被調用一次,而不是實現相關的。 for-each循環基於Iterable接口。它所做的只是在開始時調用集合的iterator()方法,然後使用該迭代器。

+0

啊,同時回答啊:) – Chii 2009-08-31 11:04:11