Класс PriorityQueue<E>
- Type Parameters:
-
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, предоставляемый в методе 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() |
Создаёт очередь 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 |
Возвращает массив, содержащий все элементы в этой очереди; тип возвращаемого массива — тип указанного массива. |
Методы, объявленные в классе 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
Подробное описание методов
добавить
public boolean add(E e)
- Унаследован от:
-
addв интерфейсеCollection<E> - Унаследован от:
-
addв интерфейсеQueue<E> - Переопределяет:
-
addв классеAbstractQueue<E> - Параметры:
-
e- элемент для добавления - Возвращает:
-
true(как указано вCollection.add(E)) - Исключения:
-
ClassCastException- если указанный элемент нельзя сравнить с элементами, которые в данный момент находятся в этой очереди с приоритетом, в соответствии с порядком очереди с приоритетом -
NullPointerException- если указанный элемент равен null
внести
public boolean offer(E e)
- Унаследован от:
-
offerв интерфейсеQueue<E> - Параметры:
-
e- элемент для добавления - Возвращает:
-
true(как указано вQueue.offer(E)) - Исключения:
-
ClassCastException- если указанный элемент нельзя сравнить с элементами, которые в данный момент находятся в этой очереди с приоритетом, в соответствии с порядком очереди с приоритетом -
NullPointerException- если указанный элемент равен null
получить
public E peek()
Queuenull, если эта очередь пуста.- Унаследован от:
-
peekв интерфейсеQueue<E> - Возвращает:
- голову этой очереди или
null, если эта очередь пуста
удалить
public boolean remove(Object o)
e, такой что o.equals(e), если эта очередь содержит один или несколько таких элементов. Возвращает true, если и только если эта очередь содержала указанный элемент (или, что эквивалентно, если эта очередь изменилась в результате вызова).- Унаследован от:
-
removeв интерфейсеCollection<E> - Переопределяет:
-
removeв классеAbstractCollection<E> - Параметры:
-
o- элемент, который должен быть удален из этой очереди, если он присутствует - Возвращает:
-
trueесли эта очередь изменилась в результате вызова
содержит
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().- Specified by:
-
toArrayв интерфейсеCollection<E> - Overrides:
-
toArrayв классеAbstractCollection<E> - Type Parameters:
-
T- тип компонентов массива, содержащего коллекцию - Parameters:
-
a- массив, в который будут помещены элементы очереди, если он достаточно большой; в противном случае, для этой цели выделяется новый массив того же типа. - Returns:
- массив, содержащий все элементы в этой очереди
- Throws:
-
ArrayStoreException- если тип указанного массива не является супертипом типа каждого элемента в этой очереди -
NullPointerException- если указанный массив null
iterator
public Iterator<E> iterator()
- Specified by:
-
iteratorв интерфейсеCollection<E> - Specified by:
-
iteratorв интерфейсеIterable<E> - Specified by:
-
iteratorв классеAbstractCollection<E> - Returns:
- итератор по элементам в этой очереди
size
public int size()
CollectionInteger.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.- Specified by:
-
sizeв интерфейсеCollection<E> - Returns:
- количество элементов в этой коллекции
clear
public void clear()
- Specified by:
-
clearв интерфейсеCollection<E> - Overrides:
-
clearв классеAbstractQueue<E>
poll
public E poll()
Queuenull если эта очередь пуста.- Specified by:
-
pollв интерфейсеQueue<E> - Returns:
- голова этой очереди или
nullесли эта очередь пуста
comparator
public Comparator<? super E> comparator()
null если эта очередь отсортирована в соответствии с естественным порядком своих элементов.- Returns:
- компаратор, используемый для упорядочения этой очереди, или
nullесли эта очередь отсортирована в соответствии с естественным порядком своих элементов
spliterator
public final Spliterator<E> spliterator()
Spliterator по элементам в этой очереди. Spliterator не обходит элементы в определённом порядке (характеристика ORDERED не сообщается). Spliterator сообщает о Spliterator.SIZED, Spliterator.SUBSIZED и Spliterator.NONNULL. В переопределяемых реализациях следует документировать сообщения об дополнительных значениях характеристик.
- Specified by:
-
spliteratorв интерфейсеCollection<E> - Specified by:
-
spliteratorв интерфейсеIterable<E> - Returns:
Spliteratorпо элементам в этой очереди- Since:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Specified by:
-
removeIfв интерфейсеCollection<E> - Parameters:
-
filter- предикат, который возвращаетtrueдля удаляемых элементов - Returns:
-
trueесли какие-либо элементы были удалены - Throws:
-
NullPointerException- если указанный фильтр null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Specified by:
-
removeAllв интерфейсеCollection<E> - Overrides:
-
removeAllв классеAbstractCollection<E> - Parameters:
-
c- коллекция, содержащая элементы, которые нужно удалить из этой коллекции - Returns:
-
trueесли эта коллекция изменилась в результате вызова - Throws:
-
NullPointerException- если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не поддерживает null-элементы (дополнительное ограничение) или если указанная коллекция null - See Also:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Specified by:
-
retainAllв интерфейсеCollection<E> - Overrides:
-
retainAllв классеAbstractCollection<E> - Parameters:
-
c- коллекция, содержащая элементы, которые нужно сохранить в этой коллекции - Returns:
-
trueесли эта коллекция изменилась в результате вызова - Throws:
-
NullPointerException- если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не допускает null-элементов (дополнительное ограничение) или если указанная коллекция null - See Also:
forEach
public void forEach(Consumer<? super E> action)
IterableIterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок задан. Исключения, выброшенные действием, передаются вызывающей стороне. Поведение этого метода не определено, если действие производит побочные эффекты, которые изменяют базовый источник элементов, если только переопределяющий класс не указал политику одновременного изменения.
- Specified by:
-
forEachв интерфейсеIterable<E> - Parameters:
-
action- действие, которое нужно выполнить для каждого элемента - Throws:
-
NullPointerException- если указанное действие null
© 1993, 2023, 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/21/docs/api/java.base/java/util/PriorityQueue.html