Ответ
Класс LinkedList в Java является одной из конкретных реализаций интерфейса Queue. Это означает, что LinkedList можно использовать там, где требуется очередь (FIFO - First-In-First-Out).
Иерархия: LinkedList → Deque → Queue → Collection
Поскольку LinkedList реализует Deque (двусторонняя очередь), он автоматически реализует и Queue.
Пример использования LinkedList как Queue:
import java.util.LinkedList;
import java.util.Queue;
Queue<String> taskQueue = new LinkedList<>();
// Добавление элементов в конец очереди
taskQueue.offer("Task1"); // Предпочтительный метод (не бросает исключение)
taskQueue.add("Task2"); // Может выбросить IllegalStateException
// Просмотр головного элемента без удаления
String head = taskQueue.peek(); // "Task1"
// Извлечение и удаление головного элемента
String processed = taskQueue.poll(); // Удаляет и возвращает "Task1"
System.out.println(taskQueue); // Вывод: [Task2]
| Ключевые методы Queue, доступные в LinkedList: | Метод | Действие | Исключение при ошибке |
|---|---|---|---|
offer(E e) |
Добавляет элемент в конец очереди. | Возвращает false. |
|
poll() |
Удаляет и возвращает головной элемент. | Возвращает null. |
|
peek() |
Возвращает головной элемент без удаления. | Возвращает null. |
|
add(E e) |
Добавляет элемент в конец очереди. | IllegalStateException |
|
remove() |
Удаляет и возвращает головной элемент. | NoSuchElementException |
|
element() |
Возвращает головной элемент без удаления. | NoSuchElementException |
Важное замечание: LinkedList как реализация Queue не является потокобезопасной. Для многопоточных сценариев следует использовать специализированные классы из пакета java.util.concurrent, например ConcurrentLinkedQueue или ArrayBlockingQueue.