Ответ
Интерфейс Queue<E> в Java моделирует классическую очередь FIFO (First-In-First-Out). Доступ к элементам строго регламентирован: добавление происходит в конец (tail), а выборка и удаление — из начала (head).
Основные методы:
| Метод | Действие | Поведение при ошибке |
|---|---|---|
boolean offer(E e) |
Добавляет элемент в конец очереди. | Возвращает false при неудаче (например, в ограниченной очереди). |
E poll() |
Удаляет и возвращает элемент из начала очереди. | Возвращает null, если очередь пуста. |
E peek() |
Возвращает элемент из начала очереди без удаления. | Возвращает null, если очередь пуста. |
boolean add(E e) |
Добавляет элемент в конец. | Выбрасывает IllegalStateException, если элемент добавить нельзя. |
E remove() |
Удаляет и возвращает элемент из начала. | Выбрасывает NoSuchElementException, если очередь пуста. |
E element() |
Возвращает элемент из начала без удаления. | Выбрасывает NoSuchElementException, если очередь пуста. |
Пример работы FIFO-очереди:
Queue<String> queue = new LinkedList<>();
queue.offer("First"); // Очередь: [First]
queue.offer("Second"); // Очередь: [First, Second]
String head = queue.peek(); // head = "First", Очередь: [First, Second]
String removed = queue.poll(); // removed = "First", Очередь: [Second]
Важно: Интерфейс Deque (двусторонняя очередь) расширяет Queue и позволяет добавлять/удалять элементы с обоих концов.