Junior
53
questionbank

Какие коллекции существуют в Java?

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

В Java существуют следующие основные интерфейсы коллекций, входящие в Java Collections Framework:

  • Collection: Базовый интерфейс, определяющий общие операции над группами объектов. От него наследуются под-интерфейсы:

    • List: Упорядоченная коллекция (sequence). Элементы могут повторяться. Поддерживает доступ по индексу.
      • ArrayList: Регулируемый массив. Хорош для быстрого доступа по индексу и добавления в конец. Медленный для вставки/удаления в середине.
      • LinkedList: Двусвязный список. Хорош для вставки/удаления в начале или в конце. Медленный для доступа по индексу.
      • Vector: Синхронизированная версия ArrayList. Считается устаревшим.
      • Stack: Наследует от Vector, реализует поведение стека (LIFO).
    • Set: Коллекция, содержащая только уникальные элементы. Не имеет гарантированного порядка.
      • HashSet: Реализуется с помощью хэш-таблицы. Самый быстрый для операций добавления, удаления и проверки наличия. Не гарантирует порядок.
      • LinkedHashSet: Реализуется как хэш-таблица + связный список. Гарантирует порядок вставки.
      • TreeSet: Реализуется с помощью красно-черного дерева. Хранит элементы в отсортированном порядке. Медленнее, чем HashSet, но быстрее, чем LinkedHashSet для поиска диапазонов.
    • Queue: Коллекция, разработанная для хранения элементов перед обработкой (FIFO - First-In, First-Out).
      • PriorityQueue: Элементы хранятся в соответствии с их естественным порядком или компаратором. Извлекается наивысший приоритет.
      • Deque: (Double Ended Queue) Поддерживает вставку и удаление элементов с обоих концов.
        • ArrayDeque: Реализация Deque на основе массива. Более эффективен, чем LinkedList в качестве очереди/стека.
  • Map: Коллекция, которая хранит пары ключ-значение. Ключи уникальны.

    • HashMap: Реализуется с помощью хэш-таблицы. Самый быстрый для операций добавления, удаления и проверки наличия. Не гарантирует порядок ключей.
    • LinkedHashMap: Реализуется как хэш-таблица + связный список. Гарантирует порядок вставки или порядок доступа.
    • TreeMap: Реализуется с помощью красно-черного дерева. Хранит пары ключ-значение в отсортированном порядке по ключам. Медленнее, чем HashMap.
    • HashTable: Синхронизированная версия HashMap. Считается устаревшей.

Также существуют устаревшие классы, не входящие в JCF, но иногда встречающиеся:

  • Vector
  • Stack
  • Hashtable
  • Enumeration (интерфейс)