Какова иерархия коллекций в Java?

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

Ответ

Иерархия коллекций Java построена на основе интерфейсов и их реализаций. Основные интерфейсы:

  • Iterable<T> — корневой интерфейс, предоставляющий итератор для цикла for-each.
  • Collection<E> — базовый интерфейс для групп объектов. От него наследуются:
    • List<E> — упорядоченная коллекция с доступом по индексу (допускает дубликаты).
      • Реализации: ArrayList, LinkedList, Vector.
    • Set<E> — коллекция уникальных элементов.
      • Реализации: HashSet (неупорядочен), LinkedHashSet (сохраняет порядок вставки), TreeSet (сортированный).
    • Queue<E> — коллекция, предназначенная для обработки элементов в определённом порядке (FIFO, LIFO, приоритет).
      • Реализации: LinkedList, PriorityQueue, ArrayDeque.
  • Map<K, V> — хранит пары «ключ-значение». Не наследует Collection, но является частью Collections Framework.
    • Реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.

Пример объявления:

List<String> names = new ArrayList<>();
Set<Integer> uniqueIds = new HashSet<>();
Map<String, Integer> scores = new HashMap<>();

Почему важна иерархия? Она обеспечивает полиморфизм: код, работающий с интерфейсом List, может использовать любую его реализацию (ArrayList или LinkedList), что повышает гибкость и упрощает тестирование.