java:在“foreach”中计算的集合表达式的次数

时间:2009-08-31 10:57:32

标签: java performance collections foreach

如果我在Java中这样做:

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

是贵的ListGeneration()在开始或每次循环迭代中只调用一次?

是否依赖于实现?

2 个答案:

答案 0 :(得分:38)

因为它等同于使用迭代器,它相当于调用集合'。 iterator()方法,它被调用一次。

答案 1 :(得分:22)

它被调用一次,而不依赖于实现。 for-each循环基于Iterable接口。它只是在开头调用集合的iterator()方法,然后使用该迭代器。