Класс PriorityQueue<E>
- Параметры типа:
E— тип элементов, хранящихся в этой очереди
- Все реализуемые интерфейсы:
Serializable, Iterable<E>, Collection<E>, Queue<E>
public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
Comparator, предоставленного при создании очереди, в зависимости от используемого конструктора. Очередь с приоритетами не допускает null. Очередь с приоритетами, использующая естественный порядок, также не допускает вставки объектов, не реализующих сравнение (это может привести к ClassCastException). Голова этой очереди — наименьший элемент согласно заданному порядку. Если несколько элементов имеют наименьшее значение, головой становится один из них — выбор при равенстве значений производится произвольно. Операции извлечения из очереди poll, remove, peek и element обращаются к элементу в голове очереди.
Очередь с приоритетами неограничена, но имеет внутреннюю вместимость, определяющую размер массива, используемого для хранения элементов очереди. Она всегда не меньше размера очереди. По мере добавления элементов вместимость очереди с приоритетами автоматически увеличивается. Подробности политики увеличения не определены.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator. Для итератора, предоставляемого методом iterator(), и сплитератора, предоставляемого методом spliterator(), не гарантируется обход элементов очереди с приоритетами в каком-либо определенном порядке. Если вам нужен упорядоченный обход, рассмотрите возможность использования Arrays.sort(pq.toArray()).
Обратите внимание: эта реализация не является синхронизированной. Несколько потоков не должны одновременно обращаться к экземпляру PriorityQueue, если хотя бы один из потоков изменяет очередь. Вместо этого используйте потокобезопасный класс PriorityBlockingQueue.
Примечание по реализации: эта реализация обеспечивает время O(log(n)) для операций добавления и извлечения из очереди (offer, poll, remove() и add); линейное время для методов remove(Object) и contains(Object); и постоянное время для методов получения (peek, element и size).
Этот класс является частью фреймворка коллекций Java.
- Начиная с версии:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PriorityQueue() |
Создает PriorityQueue с начальной вместимостью по умолчанию (11), элементы которого упорядочиваются согласно их естественному порядку. |
PriorityQueue |
Создает PriorityQueue с указанной начальной вместимостью, элементы которого упорядочиваются согласно их естественному порядку. |
PriorityQueue |
Создает PriorityQueue с указанной начальной вместимостью, элементы которого упорядочиваются согласно указанному компаратору. |
PriorityQueue |
Создает PriorityQueue, содержащую элементы указанной коллекции. |
PriorityQueue |
Создает PriorityQueue с начальной вместимостью по умолчанию, элементы которого упорядочиваются согласно указанному компаратору. |
PriorityQueue |
Создает PriorityQueue, содержащую элементы указанной очереди с приоритетами. |
PriorityQueue |
Создает PriorityQueue, содержащую элементы указанного отсортированного множества. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в эту очередь с приоритетами. |
void |
clear() |
Удаляет все элементы из этой очереди с приоритетами. |
Comparator |
comparator() |
Возвращает компаратор, используемый для упорядочивания элементов этой очереди, или null, если элементы этой очереди упорядочены согласно их естественному порядку. |
boolean |
contains |
Возвращает true, если эта очередь содержит указанный элемент. |
void |
forEach |
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не вызовет исключение. |
Iterator |
iterator() |
Возвращает итератор по элементам этой очереди. |
boolean |
offer |
Вставляет указанный элемент в эту очередь с приоритетами. |
E |
peek() |
Извлекает, но не удаляет голову этой очереди, или возвращает null, если очередь пуста. |
E |
poll() |
Извлекает и удаляет голову этой очереди или возвращает null, если очередь пуста. |
boolean |
remove |
Удаляет один экземпляр указанного элемента из этой очереди, если он присутствует. |
boolean |
removeAll |
Удаляет из этой коллекции все элементы, которые также содержатся в указанной коллекции (необязательная операция). |
boolean |
removeIf |
Удаляет из этой коллекции все элементы, удовлетворяющие заданному предикату (необязательная операция). |
boolean |
retainAll |
Оставляет в этой коллекции только элементы, содержащиеся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает количество элементов в этой коллекции. |
final Spliterator |
spliterator() |
Создает привязываемый при первом обращении и быстро завершающийся с ошибкой Spliterator для обхода элементов этой очереди. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой очереди. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой очереди; тип возвращаемого массива во время выполнения совпадает с типом указанного массива. |
Методы, объявленные в классе AbstractQueue
addAll, element, remove
Методы, объявленные в классе AbstractCollection
containsAll, isEmpty, toString
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе Collection
containsAll, equals, hashCode, isEmpty, parallelStream, stream, toArray
Подробное описание конструкторов
PriorityQueue
public PriorityQueue()
PriorityQueue с начальной емкостью по умолчанию (11), элементы которой упорядочены согласно их естественному порядку.PriorityQueue
public PriorityQueue(int initialCapacity)
PriorityQueue с указанной начальной емкостью, элементы которой упорядочены согласно их естественному порядку.- Параметры:
-
initialCapacity— начальная емкость этой очереди с приоритетами - Исключения:
-
IllegalArgumentException— еслиinitialCapacityменьше 1
PriorityQueue
public PriorityQueue(Comparator<? super E> comparator)
PriorityQueue с начальной емкостью по умолчанию, элементы которой упорядочены согласно указанному компаратору.- Параметры:
-
comparator— компаратор, который будет использоваться для упорядочения этой очереди с приоритетами. Еслиnull, будет использоваться естественный порядок элементов. - Начиная с версии:
- 1.8
PriorityQueue
public PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
PriorityQueue с указанной начальной емкостью, элементы которой упорядочены согласно указанному компаратору.- Параметры:
-
initialCapacity— начальная емкость этой очереди с приоритетами -
comparator— компаратор, который будет использоваться для упорядочения этой очереди с приоритетами. Еслиnull, будет использоваться естественный порядок элементов. - Исключения:
-
IllegalArgumentException— еслиinitialCapacityменьше 1
PriorityQueue
public PriorityQueue(Collection<? extends E> c)
PriorityQueue, содержащую элементы указанной коллекции. Если указанная коллекция является экземпляром SortedSet или другой PriorityQueue, эта очередь с приоритетами будет упорядочена так же. В противном случае элементы этой очереди с приоритетами будут упорядочены согласно их естественному порядку.- Параметры:
-
c— коллекция, элементы которой помещаются в эту очередь с приоритетами - Исключения:
-
ClassCastException— если элементы указанной коллекции нельзя сравнить друг с другом в соответствии с порядком этой очереди с приоритетами -
NullPointerException— если указанная коллекция или любой из ее элементов равны null
PriorityQueue
public PriorityQueue(PriorityQueue<? extends E> c)
PriorityQueue, содержащую элементы указанной очереди с приоритетами. Эта очередь с приоритетами будет упорядочена так же, как и заданная очередь с приоритетами.- Параметры:
-
c— очередь с приоритетами, элементы которой помещаются в эту очередь с приоритетами - Исключения:
-
ClassCastException— если элементыcнельзя сравнить друг с другом в соответствии с порядкомc -
NullPointerException— если указанная очередь с приоритетами или любой из ее элементов равны null
PriorityQueue
public PriorityQueue(SortedSet<? extends E> c)
PriorityQueue, содержащую элементы указанного отсортированного множества. Эта очередь с приоритетами будет упорядочена так же, как и заданное отсортированное множество.- Параметры:
-
c— отсортированное множество, элементы которого помещаются в эту очередь с приоритетами - Исключения:
-
ClassCastException— если элементы указанного отсортированного множества нельзя сравнить друг с другом в соответствии с порядком этого множества -
NullPointerException— если указанное отсортированное множество или любой из его элементов равны null
Подробное описание методов
add
public boolean add(E e)
- Определено в:
-
addв интерфейсеCollection<E> - Определено в:
-
addв интерфейсеQueue<E> - Переопределяет:
-
addв классеAbstractQueue<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вCollection.add(E)) - Исключения:
-
ClassCastException— если указанный элемент нельзя сравнить с элементами, находящимися в этой очереди с приоритетами, в соответствии с ее порядком -
NullPointerException— если указанный элемент равен null
offer
public boolean offer(E e)
- Определено в:
-
offerв интерфейсеQueue<E> - Параметры:
-
e— добавляемый элемент - Возвращает:
-
true(как указано вQueue.offer(E)) - Исключения:
-
ClassCastException— если указанный элемент нельзя сравнить с элементами, находящимися в этой очереди с приоритетами, в соответствии с ее порядком -
NullPointerException— если указанный элемент равен null
peek
remove
public boolean remove(Object o)
e такой, что o.equals(e), если эта очередь содержит один или несколько таких элементов. Возвращает true тогда и только тогда, когда эта очередь содержала указанный элемент (или, что равнозначно, если эта очередь изменилась в результате вызова).- Определено в:
-
removeв интерфейсеCollection<E> - Переопределяет:
-
removeв классеAbstractCollection<E> - Параметры:
-
o— элемент, который следует удалить из этой очереди, если он присутствует - Возвращает:
-
true, если эта очередь изменилась в результате вызова
contains
public boolean contains(Object o)
true, если эта очередь содержит указанный элемент. Точнее, возвращает true тогда и только тогда, когда эта очередь содержит хотя бы один элемент e такой, что o.equals(e).- Определено в:
-
containsв интерфейсеCollection<E> - Переопределяет:
-
containsв классеAbstractCollection<E> - Параметры:
-
o— объект, наличие которого в этой очереди проверяется - Возвращает:
-
true, если эта очередь содержит указанный элемент
toArray
public Object[] toArray()
Возвращаемый массив является «безопасным»: эта очередь не хранит ссылок на него. (Иными словами, этот метод должен выделить новый массив.) Поэтому вызывающий код может свободно изменять возвращенный массив.
Этот метод служит связующим звеном между API, основанными на массивах и коллекциях.
- Определено в:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этой очереди
toArray
public <T> T[] toArray(T[] a)
Если очередь помещается в указанный массив с запасом (то есть массив содержит больше элементов, чем очередь), элемент массива непосредственно после конца коллекции устанавливается в null.
Как и метод toArray(), этот метод служит связующим звеном между API, основанными на массивах и коллекциях. Кроме того, этот метод позволяет точно управлять типом выходного массива во время выполнения и при определенных обстоятельствах может помочь сократить затраты на выделение памяти.
Предположим, x — очередь, содержащая только строки. Следующий код позволяет выгрузить очередь в новый выделенный массив типа String:
String[] y = x.toArray(new String[0]); Обратите внимание, что toArray(new Object[0]) функционально идентичен toArray().- Определено в:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Параметры типа:
T— тип компонентов массива, в который помещается коллекция- Параметры:
-
a— массив, в который следует поместить элементы очереди, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа во время выполнения. - Возвращает:
- массив, содержащий все элементы этой очереди
- Исключения:
-
ArrayStoreException— если тип указанного массива во время выполнения не является супертипом типа во время выполнения каждого элемента этой очереди -
NullPointerException— если указанный массив равен null
iterator
public Iterator<E> iterator()
- Определено в:
-
iteratorв интерфейсеCollection<E> - Определено в:
-
iteratorв интерфейсеIterable<E> - Определено в:
-
iteratorв классеAbstractCollection<E> - Возвращает:
- итератор для элементов этой очереди
size
public int size()
CollectionInteger.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.- Определено в:
-
sizeв интерфейсеCollection<E> - Возвращает:
- количество элементов в этой коллекции
clear
public void clear()
- Определено в:
-
clearв интерфейсеCollection<E> - Переопределяет:
-
clearв классеAbstractQueue<E>
poll
comparator
public Comparator<? super E> comparator()
null, если очередь отсортирована согласно естественному порядку ее элементов.- Возвращает:
- компаратор, используемый для упорядочения этой очереди, или
null, если очередь отсортирована согласно естественному порядку ее элементов
spliterator
public final Spliterator<E> spliterator()
Spliterator для элементов этой очереди. Сплитератор обходит элементы в произвольном порядке (признак ORDERED не указывается). Spliterator сообщает о признаках Spliterator.SIZED, Spliterator.SUBSIZED и Spliterator.NONNULL. Переопределяющие реализации должны документировать указание дополнительных значений признаков.
- Определено в:
-
spliteratorв интерфейсеCollection<E> - Определено в:
-
spliteratorв интерфейсеIterable<E> - Возвращает:
Spliteratorдля элементов этой очереди- Начиная с версии:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Определено в:
-
removeIfв интерфейсеCollection<E> - Параметры:
-
filter— предикат, возвращающийtrueдля элементов, которые следует удалить - Возвращает:
-
true, если были удалены какие-либо элементы - Исключения:
-
NullPointerException— если указанный фильтр равен null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Определено в:
-
removeAllв интерфейсеCollection<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые следует удалить из этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Исключения:
-
NullPointerException— если эта коллекция содержит один или несколько элементов null, а указанная коллекция не поддерживает элементы null (необязательно), либо если указанная коллекция равна null - См. также:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Определено в:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые следует оставить в этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Исключения:
-
NullPointerException— если эта коллекция содержит один или несколько элементов null, а указанная коллекция не допускает элементы null (необязательно), либо если указанная коллекция равна null - См. также:
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока не будут обработаны все элементы или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок определен. Исключения, выброшенные действием, передаются вызывающему коду. Поведение этого метода не определено, если действие выполняет побочные эффекты, изменяющие исходный источник элементов, за исключением случаев, когда переопределяющий класс указал политику параллельного изменения.
- Определено в:
-
forEachв интерфейсеIterable<E> - Параметры:
-
action— действие, выполняемое для каждого элемента - Исключения:
-
NullPointerException— если указанное действие равно 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/PriorityQueue.html