Что такое Iterable в Java?

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

Ответ

Iterable — это корневой интерфейс в Java, представляющий объект, который можно перебирать (итерировать). Он является основой для цикла for-each.

Ключевые моменты:

  • Объявляет единственный метод Iterator<T> iterator(), который возвращает итератор для коллекции.
  • Все основные коллекции из Java Collections Framework (List, Set, Queue) реализуют этот интерфейс.
  • Начиная с Java 8, содержит метод default void forEach(Consumer<? super T> action) для внутренней итерации с лямбда-выражениями.

Пример использования:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("A", "B", "C");
        Iterable<String> iterable = list; // List расширяет Iterable

        // 1. Использование for-each (синтаксический сахар для iterator())
        for (String s : iterable) {
            System.out.println(s); // A, B, C
        }

        // 2. Использование forEach с лямбдой
        iterable.forEach(item -> System.out.println(item));
    }
}

Важно: Сам по себе Iterable не гарантирует порядок элементов — это зависит от конкретной реализации (например, ArrayList сохраняет порядок, а HashSet — нет).