Какие основные виды коллекций в Java?

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

Ответ

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

1. List (Список)

  • Характеристики: Упорядоченная коллекция с доступом по индексу. Допускает дубликаты и null.
  • Реализации: ArrayList, LinkedList, Vector.
  • Пример:
    List<String> list = new ArrayList<>();
    list.add("Element1");
    list.get(0); // Возвращает "Element1"

2. Set (Множество)

  • Характеристики: Хранит только уникальные элементы. Порядок зависит от реализации.
  • Реализации: HashSet (не гарантирует порядок), LinkedHashSet (сохраняет порядок добавления), TreeSet (сортирует).
  • Пример:
    Set<Integer> set = new HashSet<>();
    set.add(1);
    set.add(1); // Не добавится, элемент уже существует

3. Queue (Очередь)

  • Характеристики: Коллекция, предназначенная для обработки элементов в определенном порядке (обычно FIFO).
  • Реализации: LinkedList (также реализует Deque), PriorityQueue, ArrayDeque.
  • Пример:
    Queue<String> queue = new LinkedList<>();
    queue.offer("First");
    queue.poll(); // Удаляет и возвращает "First"

Отдельно стоит Map (Отображение)

  • Хотя Map не наследуется от Collection, он является ключевой частью фреймворка. Хранит пары "ключ-значение". Ключи уникальны.
  • Реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.
  • Пример:
    Map<String, Integer> scores = new HashMap<>();
    scores.put("Alice", 95);
    scores.get("Alice"); // Возвращает 95

Почему это важно: Выбор правильного типа коллекции напрямую влияет на производительность и корректность операций (поиск, вставка, удаление).