От какого интерфейса наследуется Collection в Java?

Ответ

Интерфейс java.util.Collection наследуется от интерфейса java.lang.Iterable.

Почему это важно:

  • Наследование от Iterable гарантирует, что любая коллекция может быть перебрана с помощью цикла for-each или итератора.
  • Collection расширяет Iterable, добавляя базовые операции для работы с группами объектов: add(), remove(), size(), contains(), clear() и другие.

Иерархия и пример:

// Iterable <- Collection <- List <- ArrayList
Collection<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Kotlin");

// Возможность итерации обеспечена Iterable
for (String lang : languages) {
    System.out.println(lang);
}

Collection является корневым интерфейсом для большей части иерархии коллекций в Java Collections Framework (кроме Map).

Ответ 18+ 🔞

А, слушай, смотри, вот эта вся ваша иерархия коллекций в Java, она же, блядь, на чём держится? Нахуй, на интерфейсах! И главный тут папа — java.util.Collection.

И знаешь, что самое прикольное? Он же, сука, не с потолка взялся! Он наследуется от java.lang.Iterable. Ну, типа, "я твой папа, но у меня тоже есть папа, и он круче".

И зачем это, спросишь? А вот зачем, ёпта:

  • Это как волшебный пропуск. Раз ты сын Iterable — любая твоя коллекция, от ArrayList до какой-нибудь LinkedBlockingDeque, автоматом умеет в цикл for-each. Итератор тебе выдаст без проблем. Это ж базовая фича, без неё нихуя не собрать!
  • А сам Collection — это уже не просто "умею давать итератор". Это уже конкретные команды: "добавь" (add()), "убери нахуй" (remove()), "сколько тут всего?" (size()), "а это говно тут есть?" (contains()), "очисти всё, блядь!" (clear()). Короче, базовый набор для управления кучей объектов.

Смотри, как это в жизни выглядит, на примере:

// Iterable <- Collection <- List <- ArrayList
// Видишь цепочку? От деда к отцу, от отца к сыну, блядь.
Collection<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("Kotlin");

// А вот эта возможность тупо пройтись по всем — она от дедушки Iterable пришла!
for (String lang : languages) {
    System.out.println(lang); // Java, Kotlin, ебать мои старые костыли!
}

И да, Collection — это такой главный распорядитель для почти всех коллекций (кроме Map, те, пидарасы, отдельной веткой пошли). Корень, блядь, могучего дерева! Вот так вот, просто и с душой.