Назад к вопросам
Junior
87
questionbank
Расскажите об иерархии коллекций в Java.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Иерархия коллекций в 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 |
Карта, отсортированная по ключам | Да | По ключу | Да |
Пример использования:
// Пример использования ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Пример использования HashSet
Set<Integer> uniqueNumbers = new HashSet<>();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(1); // Дубликат игнорируется
System.out.println(uniqueNumbers.size()); // 2
// Пример использования HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30