Какие основные структуры данных доступны в Java?

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

Ответ

В Java структуры данных представлены массивами и коллекциями из фреймворка java.util.

1. Массивы (Arrays)

  • Фиксированный размер, хранят элементы одного типа.
  • Пример: int[] numbers = new int[10];

2. Интерфейсы коллекций (Java Collections Framework)

  • List — упорядоченная коллекция, допускает дубликаты.
    • ArrayList — быстрый доступ по индексу, медленные вставки/удаления в середине.
    • LinkedList — быстрые вставки/удаления, медленный доступ по индексу.
  • Set — коллекция уникальных элементов.
    • HashSet — хранение без порядка, основано на hashCode().
    • TreeSet — элементы отсортированы (использует Comparable/Comparator).
  • Queue/Deque — коллекции, работающие по принципу очереди.
    • PriorityQueue — очередь с приоритетом.
    • ArrayDeque — двусторонняя очередь на основе массива.
  • Map — хранит пары "ключ-значение".
    • HashMap — не гарантирует порядок.
    • LinkedHashMap — сохраняет порядок вставки.
    • TreeMap — сортирует ключи.

3. Устаревшие синхронизированные классы (legacy)

  • Vector, Stack, Hashtable — синхронизированы, но менее эффективны. Вместо них используйте Collections.synchronizedList() или конкуррентные коллекции из java.util.concurrent.

Пример выбора:

  • Для частого доступа по индексу — ArrayList.
  • Для частых вставок/удалений в начале/конце — LinkedList или ArrayDeque.
  • Для хранения уникальных элементов — HashSet.
  • Для быстрого поиска по ключу — HashMap.