Какой базовый интерфейс в иерархии коллекций Java расширяет интерфейс Collection?

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

Ответ

Интерфейс Collection<E> напрямую расширяет интерфейс Iterable<T>. Это делает все коллекции совместимыми с циклом for-each и позволяет получать итератор для обхода элементов.

Ключевые методы Iterable<T>:

  • Iterator<T> iterator() — возвращает итератор для последовательного доступа к элементам.
  • default void forEach(Consumer<? super T> action) — выполняет действие для каждого элемента.

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

Collection<String> collection = List.of("A", "B", "C");

// Использование итератора (метод из Iterable)
Iterator<String> it = collection.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

// Использование for-each (возможно благодаря Iterable)
for (String item : collection) {
    System.out.println(item);
}

Таким образом, Iterable<T> является корневым интерфейсом для всех коллекций, предоставляющим базовый механизм обхода.