Gymterview
junior

Как между собой связаны Iterable, Iterator и for-each

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

Пример
// Что пишет разработчик:
for (String s : list) {
    System.out.println(s);
}

// Что генерирует компилятор:
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
    System.out.println(s);
}

Цепочка связей: класс реализует Iterable -> метод iterator() возвращает Iterator -> for-each вызывает iterator() автоматически. Для массивов for-each работает напрямую через индексный доступ, без Iterator.

На собеседовании: покажите, что for-each — это сахар над Iterator. Упомяните, что массивы тоже поддерживают for-each, но через индексный цикл, а не через Iterable.