Реализует ли класс LinkedList в Java интерфейс Queue?

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

Ответ

Да, класс java.util.LinkedList реализует интерфейс Queue. Это происходит потому, что LinkedList также реализует интерфейс Deque (двусторонняя очередь), который, в свою очередь, расширяет интерфейс Queue.

Иерархия: LinkedListDequeQueue.

Пример использования LinkedList в качестве очереди (FIFO):

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        // Создание очереди на основе LinkedList
        Queue<String> queue = new LinkedList<>();

        // Добавление элементов в конец очереди
        queue.offer("First");
        queue.offer("Second");
        queue.offer("Third");

        // Просмотр головного элемента без удаления
        System.out.println("Head of queue: " + queue.peek()); // First

        // Извлечение элементов из начала очереди
        while (!queue.isEmpty()) {
            System.out.println("Polled: " + queue.poll());
        }
        // Вывод:
        // Polled: First
        // Polled: Second
        // Polled: Third
    }
}

Основные методы Queue, доступные в LinkedList:

  • add(e) / offer(e) — добавляют элемент в конец очереди.
  • remove() / poll() — удаляют и возвращают элемент из начала очереди.
  • element() / peek() — возвращают элемент из начала очереди без удаления.

Поскольку LinkedList также является Deque, его можно использовать как стек (LIFO) или двустороннюю очередь.