java: how many times is the collection expression

2020-04-01 08:44发布

问题:

if I do this in Java:

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

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

Is it implementation dependent?

回答1:

because it is equivalent to using an iterator, it is equivalent to calling the collections' . iterator() method, and it is called once.



回答2:

It's invoked once, and not implementation dependant. The for-each loop is based on the Iterable interface. All it does is call the collection's iterator() method once at the beginning, and then works with that iterator.