Какие основные интерфейсы и реализации коллекций в Java вы знаете?

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

Ответ

Коллекции в Java организованы в иерархии List, Set и Map (последний не является частью коллекций в строгом смысле, но относится к Collections Framework).

Интерфейс Описание Ключевые реализации Особенности
List<E> Упорядоченная коллекция (последовательность), допускает дубликаты. ArrayList, LinkedList, Vector (устаревший) ArrayList — быстрый доступ по индексу, медленные вставка/удаление в середине. LinkedList — быстрые вставка/удаление, медленный доступ по индексу.
Set<E> Коллекция уникальных элементов. HashSet, LinkedHashSet, TreeSet HashSet — не гарантирует порядок, O(1) для основных операций. LinkedHashSet — сохраняет порядок вставки. TreeSet — хранит элементы отсортированными (по Comparable/Comparator).
Map<K,V> Отображение ключ-значение, ключи уникальны. HashMap, LinkedHashMap, TreeMap, ConcurrentHashMap HashMap — не гарантирует порядок. LinkedHashMap — порядок вставки/доступа. TreeMap — сортировка по ключам. ConcurrentHashMap — потокобезопасная.

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

// List
List<String> names = new ArrayList<>();
names.add("Alice");
names.get(0); // Быстрый доступ

// Set
Set<Integer> uniqueIds = new HashSet<>();
uniqueIds.add(1);
uniqueIds.add(1); // Второе добавление игнорируется

// Map
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 95);
scores.get("Alice"); // 95

Выбор реализации зависит от требований к порядку, уникальности, скорости операций и потокобезопасности.