Что такое Queue в Java и основные реализации?

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

Ответ

Queue (очередь) — это интерфейс из Java Collections Framework, представляющий коллекцию, предназначенную для хранения элементов перед обработкой в определенном порядке. Обычно это порядок FIFO (First-In-First-Out), но возможны и другие (например, по приоритету).

Основные методы:

  • add(e), offer(e) — вставка элемента.
  • remove(), poll() — извлечение и удаление головного элемента.
  • element(), peek() — получение головного элемента без удаления.

Важные реализации:

Реализация Описание Особенности
LinkedList Реализует и List, и Queue. Двусторонняя очередь, не потокобезопасна.
PriorityQueue Очередь с приоритетом. Элементы извлекаются в порядке, заданном Comparator или естественным порядком.
ArrayDeque Двусторонняя очередь на основе массива. Более эффективна, чем LinkedList, для использования в качестве стека или очереди.
BlockingQueue (интерфейс) Очередь с поддержкой блокирующих операций. Используется в многопоточных сценариях. Реализации: ArrayBlockingQueue, LinkedBlockingQueue.

Пример использования:

Queue<String> queue = new LinkedList<>();
queue.offer("First");
queue.offer("Second");

System.out.println(queue.poll()); // "First"
System.out.println(queue.peek()); // "Second"