Что такое интерфейс Queue в Java?

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

Ответ

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

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

  • Добавление: add(E e) (бросает исключение при ошибке) и offer(E e) (возвращает false).
  • Извлечение и удаление: remove() (бросает исключение) и poll() (возвращает null).
  • Просмотр головы: element() (бросает исключение) и peek() (возвращает null).

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

Queue<String> queue = new LinkedList<>();
queue.offer("Первый");
queue.offer("Второй");
System.out.println(queue.poll()); // "Первый"
System.out.println(queue.peek()); // "Второй"

Популярные реализации:

  • LinkedList — базовая реализация двусвязного списка.
  • PriorityQueue — очередь с приоритетом (элементы упорядочены).
  • ArrayDeque — эффективная двусторонняя очередь на основе массива.

Применение: Очереди широко используются в многопоточном программировании (например, BlockingQueue), для планирования задач, обработки событий и алгоритмов обхода графов (BFS).