Класс 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 Collections Framework.
- Since:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PriorityQueue() |
Создаёт очередь приоритетов с начальной емкостью по умолчанию (11), упорядочивая элементы в соответствии с их естественным порядком. |
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 |
Возвращает массив, содержащий все элементы в этой очереди; тип возвращаемого массива соответствует заданному массиву. |
Методы, объявленные в классе java.util.AbstractQueue
addAll, element, remove
Методы, объявленные в классе java.util.AbstractCollection
containsAll, isEmpty, toString
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.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, основанным на массивах, и 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().- Specified by:
-
toArrayin interfaceCollection<E> - Overrides:
-
toArrayin classAbstractCollection<E> - Type Parameters:
T— компонентный тип массива, содержащего коллекцию- Parameters:
-
a— массив, в который должны быть сохранены элементы очереди, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа времени выполнения. - Returns:
- массив, содержащий все элементы в этой очереди
- Throws:
-
ArrayStoreException— если тип времени выполнения указанного массива не является надтипом типа времени выполнения каждого элемента в этой очереди -
NullPointerException— если указанный массив null
iterator
public Iterator<E> iterator()
- Specified by:
-
iteratorin interfaceCollection<E> - Specified by:
-
iteratorin interfaceIterable<E> - Specified by:
-
iteratorin classAbstractCollection<E> - Returns:
- итератор по элементам в этой очереди
size
public int size()
CollectionInteger.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.- Specified by:
-
sizein interfaceCollection<E> - Returns:
- количество элементов в этой коллекции
clear
public void clear()
- Specified by:
-
clearin interfaceCollection<E> - Overrides:
-
clearin classAbstractQueue<E>
poll
comparator
public Comparator<? super E> comparator()
null, если эта очередь отсортирована в соответствии с естественным порядком своих элементов.- Returns:
- компаратор, используемый для упорядочения этой очереди, или
null, если эта очередь отсортирована в соответствии с естественным порядком своих элементов
spliterator
public final Spliterator<E> spliterator()
Spliterator по элементам в этой очереди. Разделитель не обходит элементы в определённом порядке (характеристика ORDERED не сообщается). Spliterator сообщает Spliterator.SIZED, Spliterator.SUBSIZED и Spliterator.NONNULL. Реализующие классы должны документировать сообщения об дополнительных характеристиках.
- Specified by:
-
spliteratorin interfaceCollection<E> - Specified by:
-
spliteratorin interfaceIterable<E> - Returns:
Spliteratorпо элементам в этой очереди- Since:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Specified by:
-
removeIfin interfaceCollection<E> - Parameters:
-
filter— предикат, возвращающийtrueдля элементов, которые необходимо удалить - Returns:
-
true, если какие-либо элементы были удалены - Throws:
-
NullPointerException— если указанный фильтр null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Specified by:
-
removeAllin interfaceCollection<E> - Overrides:
-
removeAllin classAbstractCollection<E> - Parameters:
-
c— коллекция, содержащая элементы, которые необходимо удалить из этой коллекции - Returns:
-
true, если эта коллекция изменилась в результате вызова - Throws:
-
NullPointerException— если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не поддерживает null-элементы (необязательное) или если указанная коллекция null - See Also:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Specified by:
-
retainAllin interfaceCollection<E> - Overrides:
-
retainAllin classAbstractCollection<E> - Parameters:
-
c— коллекция, содержащая элементы, которые необходимо сохранить в этой коллекции - Returns:
-
true, если эта коллекция изменилась в результате вызова - Throws:
-
NullPointerException— если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не допускает null-элементов (необязательное) или если указанная коллекция null - See Also:
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока все элементы не будут обработаны или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок указан. Исключение, выброшенное действием, передаётся вызывающему методу. Поведение этого метода не определено, если действие выполняет побочные эффекты, которые изменяют базовый источник элементов, если реализующий класс не указал политику одновременного изменения.
- Specified by:
-
forEachin interfaceIterable<E> - Parameters:
-
action— действие, которое должно выполняться для каждого элемента - Throws:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/PriorityQueue.html