Ответ
Интерфейс Iterable<T> позволяет объекту быть целью цикла for-each (enhanced for loop). Он определяет контракт для получения итератора (Iterator<T>) для последовательного обхода элементов.
Ключевые моменты:
- Содержит единственный абстрактный метод
iterator(), возвращающийIterator<T>. - Реализуется всеми основными коллекциями (
Collection,List,Set,Queue) из стандартной библиотеки. - Позволяет использовать лаконичный синтаксис:
for (T item : iterable). - Начиная с Java 8, предоставляет методы по умолчанию:
forEach(Consumer)иspliterator().
Пример использования:
List<String> list = Arrays.asList("a", "b", "c");
// Цикл for-each работает, потому что List реализует Iterable
for (String s : list) {
System.out.println(s);
}
// Использование forEach (Java 8+)
list.forEach(System.out::println);
Почему это важно: Iterable — это фундаментальный интерфейс, абстрагирующий источник данных и делающий код, который их обрабатывает, независимым от конкретной реализации коллекции.