Интерфейс Queue<E>
- Параметры типа:
E- тип элементов, хранящихся в этой очереди
- Все супер-интерфейсы:
Collection<E>, Iterable<E>
- Все известные подинтерфейсы:
BlockingDeque<E>, BlockingQueue<E>, Deque<E>, TransferQueue<E>
- Все известные реализующие классы:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue
public interface Queue<E> extends Collection<E>
Collection, очереди предоставляют дополнительные операции вставки, извлечения и просмотра. Каждая из этих операций имеет две формы: одна выбрасывает исключение при сбое операции, другая возвращает специальное значение (либо null, либо false, в зависимости от операции). Последняя форма операции вставки предназначена специально для использования с реализациями Queue с ограниченной вместимостью; в большинстве реализаций операции вставки не могут завершиться неудачно. | Выбрасывает исключение | Возвращает специальное значение | |
|---|---|---|
| Вставка | add(e) | offer(e) |
| Удаление | remove() | poll() |
| Просмотр | element() | peek() |
Обычно, но не обязательно, очереди упорядочивают элементы по принципу FIFO (первым пришёл — первым вышел). К исключениям относятся очереди с приоритетом, в которых элементы упорядочиваются согласно заданному компаратору или естественному порядку элементов, а также очереди LIFO (или стеки), в которых элементы упорядочиваются по принципу LIFO (последним пришёл — первым вышел). Независимо от используемого порядка, головой очереди является элемент, который будет удалён при вызове remove() или poll(). В очереди FIFO все новые элементы вставляются в хвост очереди. В других типах очередей могут использоваться иные правила размещения. Каждая реализация Queue должна указывать свои свойства упорядочивания.
Метод offer вставляет элемент, если это возможно, в противном случае возвращая false. Это отличается от метода Collection.add, который может завершиться неудачей при добавлении элемента только путём выбрасывания непроверяемого исключения. Метод offer предназначен для случаев, когда сбой является обычным, а не исключительным событием, например, при работе с очередями фиксированной вместимости (или «ограниченными» очередями).
Методы remove() и poll() удаляют и возвращают голову очереди. То, какой именно элемент будет удалён из очереди, зависит от политики упорядочивания очереди, которая различается в разных реализациях. Методы remove() и poll() отличаются только поведением в случае, если очередь пуста: метод remove() выбрасывает исключение, а метод poll() возвращает null.
Методы element() и peek() возвращают голову очереди, но не удаляют её.
Интерфейс Queue не определяет блокирующие методы очереди, распространённые в параллельном программировании. Эти методы, которые ожидают появления элементов или освобождения места, определены в интерфейсе BlockingQueue, расширяющем этот интерфейс.
Реализации Queue обычно не допускают вставку элементов null, хотя некоторые реализации, например LinkedList, не запрещают вставку null. Даже в реализациях, которые это допускают, не следует вставлять null в Queue, поскольку null также используется методом poll в качестве специального возвращаемого значения, указывающего, что очередь не содержит элементов.
Реализации Queue обычно не определяют версии методов equals и hashCode, основанные на элементах, а наследуют версии, основанные на идентичности, от класса Object, поскольку равенство элементов не всегда однозначно определено для очередей с одинаковыми элементами, но разными свойствами упорядочивания.
Этот интерфейс является частью Java Collections Framework.
- С версии:
- 1.5
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно, не нарушая ограничений вместимости; в случае успеха возвращает true, а если в данный момент нет свободного места, выбрасывает IllegalStateException. |
E |
element() |
Извлекает голову этой очереди, но не удаляет её. |
boolean |
offer |
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно, не нарушая ограничений вместимости. |
E |
peek() |
Извлекает голову этой очереди, но не удаляет её, либо возвращает null, если очередь пуста. |
E |
poll() |
Извлекает и удаляет голову этой очереди либо возвращает null, если очередь пуста. |
E |
remove() |
Извлекает и удаляет голову этой очереди. |
Методы, объявленные в интерфейсе Collection
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
Подробное описание методов
add
boolean add(E e)
true, а если в данный момент нет свободного места, выбрасывает IllegalStateException.- Определено в:
-
addв интерфейсеCollection<E> - Параметры:
-
e- добавляемый элемент - Возвращает:
-
true(как указано вCollection.add(E)) - Выбрасывает:
-
IllegalStateException- если в данный момент элемент невозможно добавить из-за ограничений вместимости -
ClassCastException- если класс указанного элемента не позволяет добавить его в эту очередь -
NullPointerException- если указанный элемент равен null, а эта очередь не допускает элементы null -
IllegalArgumentException- если некоторое свойство этого элемента не позволяет добавить его в эту очередь
offer
boolean offer(E e)
add(E), который может завершиться неудачей при вставке элемента только путём выбрасывания исключения.- Параметры:
-
e- добавляемый элемент - Возвращает:
-
true, если элемент был добавлен в эту очередь, иначеfalse - Выбрасывает:
-
ClassCastException- если класс указанного элемента не позволяет добавить его в эту очередь -
NullPointerException- если указанный элемент равен null, а эта очередь не допускает элементы null -
IllegalArgumentException- если некоторое свойство этого элемента не позволяет добавить его в эту очередь
remove
E remove()
poll() только тем, что выбрасывает исключение, если очередь пуста.- Возвращает:
- голову этой очереди
- Выбрасывает:
-
NoSuchElementException- если очередь пуста
poll
E poll()
null, если очередь пуста.- Возвращает:
- голову этой очереди либо
null, если очередь пуста
element
E element()
peek только тем, что выбрасывает исключение, если очередь пуста.- Возвращает:
- голову этой очереди
- Выбрасывает:
-
NoSuchElementException- если очередь пуста
peek
E peek()
null, если очередь пуста.- Возвращает:
- голову этой очереди либо
null, если очередь пуста
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Queue.html