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

Ответ

Да, класс 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) или двустороннюю очередь.

Ответ 18+ 🔞

А, вот этот вопрос, ёпта, про LinkedList и Queue! Ну, давай разберёмся, чтобы мозг не взорвался, как у того Герасима, когда он Муму топил.

Так вот, смотри. Класс java.util.LinkedList — он, сука, такой разносторонний, как тот актёр, который и в драме, и в комедии снимается, а потом ещё и в цирке жонглирует. И да, он реализует интерфейс Queue. А происходит это по хитрой цепочке наследования, блядь.

Вся эта ёбаная иерархия выглядит так: LinkedListDequeQueue.

То есть наш LinkedList — это не просто список, это ещё и Deque (двусторонняя очередь, если по-русски), а Deque — это уже расширенный Queue. Получается, LinkedList может работать как обычная очередь (FIFO — первый пришёл, первый ушёл), как стек (LIFO — последний пришёл, первый ушёл) и как двусторонняя очередь (можно с обоих концов тыкать). Универсальный солдат, блядь!

Вот тебе пример, как из LinkedList сделать очередь и гонять элементы, как по конвейеру:

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

public class QueueExample {
    public static void main(String[] args) {
        // Берём LinkedList и говорим: "Ты теперь очередь, сука!"
        Queue<String> queue = new LinkedList<>();

        // Суём элементы в хвост очереди методом offer()
        queue.offer("Первый");
        queue.offer("Второй");
        queue.offer("Третий");

        // Подсматриваем, кто там в голове, без выдёргивания (peek())
        System.out.println("Голова очереди: " + queue.peek()); // Выведет "Первый"

        // А теперь выдёргиваем всех по порядку, пока очередь не опустеет
        while (!queue.isEmpty()) {
            System.out.println("Вытащили: " + queue.poll());
        }
        // На экране будет:
        // Вытащили: Первый
        // Вытащили: Второй
        // Вытащили: Третий
    }
}

Основные методы Queue, которые LinkedList умеет, потому что он такой умный:

  • add(e) / offer(e) — запихивают элемент в конец. add может ругнуться, если места нет, а offer — вежливо вернёт false. Как два охранника в клуб.
  • remove() / poll() — выдёргивают и отдают элемент с самого начала. remove орет, если очередь пуста, а poll молча возвращает null. Разница, как между скандалистом и тихоней.
  • element() / peek() — просто подсматривают, кто там в начале, но не трогают. element тоже может устроить истерику на пустой очереди, а peek — нет.

И помни, раз LinkedList ещё и Deque, то им можно пользоваться как стеком (push, pop) или тыкать элементы с обоих концов (addFirst, addLast). Короче, инструмент на все случаи жизни, хоть гвозди забивай, хоть программу пиши. Главное — не перепутать, где у тебя голова, а где хвост, а то получится, как в той басне, блядь.