Как перебрать массив, возвращаемый функцией в Java - PullRequest
1 голос
/ 22 марта 2012

Каков наилучший способ перебора массива, возвращаемого функцией?

Пример:

for (String s : collectMyStrings()){
  System.out.println(s);
}

Вызывается ли метод collectMyStrings () в каждой итерации или Java вызывает его только один рази использовать возвращенный массив для всех итераций цикла for?

Ответы [ 3 ]

6 голосов
/ 22 марта 2012

Он будет вызван только один раз, и итератор для возвращенного массива будет создан (неявно).

2 голосов
/ 22 марта 2012

Для массивов цикл for-each преобразуется компилятором Java в обычный цикл for с индексной переменной. Это означает, что ваш фрагмент кода примерно эквивалентен следующему:

String[] strings = collectMyStrings();
int length = strings.length;

for (int i = 0; i < length; i++) {
    String s = strings[i];
    System.out.println(s);
}

Итак, как видите, метод вызывается только один раз. Даже свойство длины массива читается только один раз.

0 голосов
/ 22 марта 2012

Метод collectMyStrings() вызывается только один раз, чтобы перебрать массив / коллекцию.

...