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

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

Ответ

Цикл for-each (enhanced for loop) — это синтаксическая конструкция в Java для итерации по элементам массивов или коллекций, реализующих интерфейс Iterable. Он устраняет необходимость явного использования индексов или итераторов в простых случаях.

Синтаксис:

for (Type element : iterableOrArray) {
    // работа с element
}

Примеры:

  1. Итерация по массиву:

    int[] numbers = {1, 2, 3, 4, 5};
    for (int num : numbers) {
    System.out.println(num * 2); // Выведет: 2, 4, 6, 8, 10
    }
  2. Итерация по коллекции:

    List<String> names = List.of("Alice", "Bob", "Charlie");
    for (String name : names) {
    System.out.println("Hello, " + name);
    }

Ключевые особенности и ограничения:

  • Поддерживаемые типы: Работает с массивами и любыми объектами, реализующими интерфейс java.lang.Iterable (все стандартные коллекции из java.util).
  • Только для чтения: Не предоставляет доступа к текущему индексу. Попытка удалить или добавить элемент в коллекцию во время итерации приведёт к ConcurrentModificationException.
  • Производительность: Для массивов компилируется в обычный цикл for с индексом. Для коллекций использует вызов iterator(), hasNext() и next().

Когда использовать? Для простого последовательного обхода всех элементов. Для модификации коллекции или когда нужен индекс, используйте явный Iterator или классический цикл for.