Gymterview
junior

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

Iterable — это интерфейс с единственным абстрактным методом iterator(), который возвращает объект Iterator. Связь между ними — это паттерн: Iterable является фабрикой для Iterator.

Интерфейс Iterable реализуют все коллекции JCF (через Collection). Каждый вызов iterator() создает новый экземпляр итератора, указывающий на начало коллекции. Это позволяет одновременно иметь несколько независимых итераторов для одной и той же коллекции.

Начиная с Java 8, Iterable также содержит default-методы forEach(Consumer) и spliterator(), что расширяет его возможности для работы со Stream API.

На собеседовании: скажите, что Iterable — это фабрика для Iterator через метод iterator(). Упомяните, что именно реализация Iterable позволяет использовать объект в for-each.