如果我在Java中这样做:
for(String s : myCollection.expensiveListGeneration())
{
doSomething();
}
是贵的ListGeneration()在开始或每次循环迭代中只调用一次?
是否依赖于实现?
答案 0 :(得分:38)
因为它等同于使用迭代器,它相当于调用集合'。 iterator()方法,它被调用一次。
答案 1 :(得分:22)
它被调用一次,而不依赖于实现。 for-each循环基于Iterable
接口。它只是在开头调用集合的iterator()
方法,然后使用该迭代器。