Интерфейс 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.
- С версии:
- 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
addAll |
Добавляет все элементы указанной коллекции в эту коллекцию (необязательная операция). |
void |
clear() |
Удаляет все элементы из этой коллекции (необязательная операция). |
boolean |
contains |
Возвращает true, если эта коллекция содержит указанный элемент. |
boolean |
containsAll |
Возвращает true, если эта коллекция содержит все элементы указанной коллекции. |
boolean |
equals |
Сравнивает указанный объект с этой коллекцией на равенство. |
int |
hashCode() |
Возвращает значение хеш-кода этой коллекции. |
boolean |
isEmpty() |
Возвращает true, если эта коллекция не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор по элементам этой коллекции. |
default Stream |
parallelStream() |
Возвращает, возможно, параллельный Stream с этой коллекцией в качестве источника. |
boolean |
remove |
Удаляет один экземпляр указанного элемента из этой коллекции, если он присутствует (необязательная операция). |
boolean |
removeAll |
Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция). |
default boolean |
removeIf |
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция). |
boolean |
retainAll |
Оставляет только те элементы этой коллекции, которые содержатся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает количество элементов в этой коллекции. |
default Spliterator |
spliterator() |
Создаёт Spliterator для элементов этой коллекции. |
default Stream |
stream() |
Возвращает последовательный Stream с этой коллекцией в качестве источника. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой коллекции. |
default <T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator. |
<T> T[] |
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.