Я рассмотрю ваш вопрос о том, где вы можете узнать «значение» итерации при использовании расширенного for
l oop.
Эквивалентной реализации for-each
или улучшенного for
l oop для коллекций - это не совсем ваше l oop из for (int i=0; i<names.length; i++)
, если names
- это List
.
Эквивалентный l oop, выписанный для for (String i: names)
, будет выглядит примерно так:
String[] arr = {"Joe", "Jessica", "Javi", "James", "Kevin"};
List<String> names = Arrays.asList(arr);
for (Iterator<String> i = names.iterator(); i.hasNext(); ) {
String str = i.next();
System.out.print(str);
System.out.println(",");
}
Там, где улучшенные циклы for
построены на Iterator
для Collections
, как видно здесь в документации Java 5 от того времени, когда изначально были созданы расширенные циклы for
.
Однако в вашем примере вы используете массив.
Для массивов более ранняя документация гласит:
Для Каждая конструкция также применима к массивам, где она скрывает индексную переменную , а не итератор. Следующий метод возвращает сумму значений в массиве int:
Как видите, вы не можете получить доступ к индексной переменной при использовании расширенного for
l oop и если вам требуется доступ к нему для массива, вам следует вместо этого прибегнуть к стандартному l oop.
Для вашего текущего примера есть решения, такие как String.join
, упомянутые в других ответах, если Вы также не хотите использовать стандартный for
l oop, но я думаю, что они уже достаточно хорошо объяснены.