2009-08-31 15 views
26

で評価コレクション式回数です:のjava:私はJavaでこれを行う場合は、「foreachの」

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

はexpensiveListGeneration(ある)はbegginingで、またはすべてのサイクルの繰り返しに一度だけ呼び出さ?

実装に依存しますか?

+0

[Java foreach効率性](http://stackoverflow.com/questions/904582/java-foreach-効率)の可能な複製 –

答えて

33

イテレータを使用するのと同等であるため、コレクション 'を呼び出すのと同じです。 iterator()メソッドを呼び出し、一度呼び出されます。

19

これは一度呼び出され、実装に依存しません。 for-eachループはIterableインターフェイスに基づいています。すべては、コレクションのiterator()メソッドを最初に呼び出すだけで、そのイテレータで動作します。

+0

ああ、同時に答えた:heh :) – Chii