Класс 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, предоставляемого методом iterator(), и Spliterator, предоставляемого методом spliterator(), не гарантируется обход элементов очереди с приоритетом в каком-либо определённом порядке. Если необходим упорядоченный обход, рассмотрите возможность использования Arrays.sort(pq.toArray()).
Обратите внимание, что эта реализация не синхронизирована. Несколько потоков не должны одновременно обращаться к экземпляру PriorityQueue, если хотя бы один из потоков изменяет очередь. Вместо этого используйте потокобезопасный класс PriorityBlockingQueue.
Примечание по реализации: эта реализация обеспечивает время O(log(n)) для методов добавления и извлечения элементов (offer, poll, remove() и add); линейное время для методов remove(Object) и contains(Object); и постоянное время для методов извлечения (peek, element и size).
Этот класс входит в состав Java Collections Framework.
- Начиная с версии:
- 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
addAll |
Добавляет все элементы указанной коллекции в эту очередь. |
E |
element() |
Извлекает, но не удаляет голову этой очереди. |
E |
remove() |
Извлекает и удаляет голову этой очереди. |
Методы, объявленные в классе AbstractCollection
containsAll, isEmpty, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
containsAll |
Возвращает true, если эта коллекция содержит все элементы указанной коллекции. |
boolean |
isEmpty() |
Возвращает true, если эта коллекция не содержит элементов. |
String |
toString() |
Возвращает строковое представление этой коллекции. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии. Финализация устарела и подлежит удалению в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать до пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Collection
equals, hashCode, parallelStream, stream, toArray | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает указанный объект с этой коллекцией на равенство. |
int |
hashCode() |
Возвращает значение хеш-кода этой коллекции. |
default Stream |
parallelStream() |
Возвращает, возможно, параллельный Stream, источником которого является эта коллекция. |
default Stream |
stream() |
Возвращает последовательный Stream, источником которого является эта коллекция. |
default <T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator. |
Подробное описание конструкторов
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 на основе массивов и 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.