Java: "foreach"中的集合表达式会被评估多少次?

36

如果我在Java中这样做:

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

is expensiveListGeneration() invoked just once at the beginning or in every cycle iteration?

Is it implementation dependent?


可能是 Java foreach 的效率问题 的重复问题。 - Ben Voigt
2个回答

49

因为它等同于使用迭代器,等同于调用集合的 .iterator() 方法,并且只被调用一次。


32

这个方法只被调用一次,且不依赖于具体实现。for-each循环基于Iterable接口。它仅在开始时调用集合的iterator()方法一次,然后使用该迭代器进行操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接