Какие основные интерфейсы иерархии Java Collections Framework (JCF)?

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

Ответ

Иерархия JCF строится вокруг двух корневых интерфейсов: Collection и Map.

1. Корневой интерфейс Collection<E>

Определяет базовые операции для групп объектов: add, remove, contains, size, iterator. От него наследуются:

  • List<E>упорядоченная коллекция с допустимыми дубликатами. Доступ по индексу.
    • Реализации: ArrayList, LinkedList, CopyOnWriteArrayList.
  • Set<E> — коллекция уникальных элементов (не допускает дубликатов).
    • SortedSet<E> / NavigableSet<E>Set с гарантированным порядком сортировки.
      • Реализации: TreeSet, ConcurrentSkipListSet.
    • Другие реализации: HashSet (неупорядочен), LinkedHashSet (сохраняет порядок вставки).
  • Queue<E> — коллекция, предназначенная для обработки элементов в определенном порядке (обычно FIFO).
    • Deque<E> — двусторонняя очередь (добавление/удаление с обоих концов).
      • Реализации: ArrayDeque, LinkedList.
    • Другие реализации: PriorityQueue (очередь с приоритетом).

2. Корневой интерфейс Map<K, V>

Представляет отображение «ключ-значение». Ключи уникальны.

  • SortedMap<K, V> / NavigableMap<K, V>Map с ключами, отсортированными по естественному порядку или компаратору.
    • Реализации: TreeMap, ConcurrentSkipListMap.
  • Другие реализации: HashMap (неупорядочен), LinkedHashMap (сохраняет порядок вставки), ConcurrentHashMap (потокобезопасная).

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

Collection<String> coll = new ArrayList<>(); // Общая ссылка
List<String> list = new ArrayList<>();      // Конкретный тип
Set<Integer> set = new HashSet<>();
Map<String, Object> map = new HashMap<>();
Queue<Double> queue = new ArrayDeque<>();

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