Подтвердить что ты не робот

Java: сколько раз выражение коллекции оценивается в "foreach"

если я делаю это в Java:

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

является дорогостоящимListGeneration(), вызывается только один раз в начале или в каждом итерации цикла?

Является ли она зависимой от реализации?

4b9b3361

Ответ 1

поскольку он эквивалентен использованию итератора, он эквивалентен вызову коллекций. iterator(), и он вызывается один раз.

Ответ 2

Он вызывается один раз, а не зависит от реализации. Цикл for-each основан на интерфейсе Iterable. Все, что он делает, вызывает метод коллекции iterator() один раз в начале, а затем работает с этим итератором.