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

2022-09-01 08:11:38

如果我在Java中这样做:

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

昂贵的ListGeneration()在开始时还是在每个周期迭代中只调用一次?

它是否依赖于实现?


答案 1

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


答案 2

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