Как работает цикл for-each в Java?

«Как работает цикл for-each в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Цикл for-each (enhanced for loop) в Java предоставляет краткий синтаксис для итерации по элементам массивов или коллекций, реализующих интерфейс Iterable<T>.

Принцип работы:

  • Для коллекций компилятор преобразует цикл в использование Iterator, полученного вызовом метода iterator().
  • Для массивов цикл преобразуется в обычный индексный for.

Примеры:

// Итерация по коллекции (List)
List<String> names = List.of("Alice", "Bob", "Charlie");
for (String name : names) {
    System.out.println(name);
}

// Итерация по массиву
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println(num);
}

Ограничения и особенности:

  • Нельзя модифицировать коллекцию (добавлять/удалять элементы) во время итерации, иначе будет выброшено ConcurrentModificationException.
  • Нет прямого доступа к индексу текущего элемента. Если индекс нужен, используйте обычный цикл for.
  • Работает только с массивами или объектами, реализующими Iterable<T>.