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.