Junior
55
questionbank

Расскажите об иерархии коллекций в Java.

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Иерархия коллекций в 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