Иерархия коллекций в Java построена вокруг двух корневых интерфейсов: Collection и Map. Она определена в пакете java.util.
Collection<E>: Корневой интерфейс для большинства коллекций. Представляет собой группу элементов. Не гарантирует порядок или уникальность элементов.
List<E>: Упорядоченная коллекция (последовательность). Элементы имеют определенный индекс. Могут содержать дубликаты.
ArrayList<E>: Реализация на основе массива. Быстрый случайный доступ, медленные вставки/удаления в середине.LinkedList<E>: Реализация на основе связного списка. Медленный случайный доступ, быстрые вставки/удаления в начале/конце.Vector<E>: Устаревший синхронизированный класс. Похож на ArrayList, но потоко-безопасный (и менее производительный).Stack<E>: Устаревший класс, расширяющий Vector, реализует поведение стека (LIFO).Set<E>: Коллекция, содержащая уникальные элементы.
HashSet<E>: Реализация на основе хеш-таблицы. Неупорядоченная. Быстрые операции add, remove, contains.LinkedHashSet<E>: Сохраняет порядок вставки.SortedSet<E>: Набор, отсортированный по возрастанию.
TreeSet<E>: Реализация на основе красно-черного дерева. Гарантирует отсортированный порядок.Queue<E>: Коллекция, предназначенная для хранения элементов перед обработкой, часто в порядке FIFO (First-In, First-Out).
PriorityQueue<E>: Реализация очереди с приоритетами. Элементы извлекаются в соответствии с их приоритетом.Deque<E>: (Double Ended Queue) Двусторонняя очередь. Поддерживает операции вставки и извлечения как из начала, так и из конца.
ArrayDeque<E>: Реализация Deque на основе динамического массива. Быстрее, чем LinkedList для использования в качестве стека или очереди.Map<K, V>: Объект, который отображает ключи на значения. Ключи уникальны, значения могут повторяться.
HashMap<K, V>: Реализация на основе хеш-таблицы. Неупорядоченная. Быстрые операции put, get, remove.LinkedHashMap<K, V>: Сохраняет порядок вставки или порядок доступа.SortedMap<K, V>: Карта, отсортированная по ключам.
TreeMap<K, V>: Реализация на основе красно-черного дерева. Гарантирует отсортированный порядок по ключам.Hashtable<K, V>: Устаревший синхронизированный класс. Похож на HashMap, но потоко-безопасный (и менее производительный).Основные интерфейсы:
| Интерфейс | Описание | Порядок | Уникальность | Дубликаты значений |
|---|---|---|---|---|
Collection | Группа элементов | +/- | +/- | Да |
List | Упорядоченная коллекция | Да | Нет | Да |
Set | Коллекция уникальных элементов | +/- | Да | Нет |
Queue | Коллекция для обработки (FIFO) | Да | Нет | Да |
Deque | Двусторонняя очередь | Да | Нет | Да |
Map | Ключ-значение | +/- | По ключу | Да |
SortedSet | Отсортированный набор | Да | Да | Нет |
SortedMap | Карта, отсортированная по ключам | Да | По ключу | Да |
Пример использования:
java