Класс PriorityQueue<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractQueue<E>
-
- java.util.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(), не гарантируется, что будет проходить элементы очереди с приоритетами в каком-либо определённом порядке. Если вам нужен упорядоченный обход, используйте 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() Создаёт очередь с приоритетами с начальной емкостью по умолчанию (11), которая упорядочивает элементы в соответствии с их естественным порядком. |
PriorityQueue(Collection<? extends E> c) Создаёт очередь с приоритетами, содержащую элементы в указанном наборе. |
PriorityQueue(Comparator<? super E> comparator) Создаёт очередь с приоритетами с начальной емкостью по умолчанию и элементами, упорядоченными в соответствии с указанным компаратором. |
PriorityQueue(int initialCapacity) Создаёт очередь с приоритетами с указанной начальной емкостью, которая упорядочивает элементы в соответствии с их естественным порядком. |
PriorityQueue(int initialCapacity,
Comparator<? super E> comparator) Создаёт очередь с приоритетами с указанной начальной емкостью, которая упорядочивает элементы в соответствии с указанным компаратором. |
PriorityQueue(PriorityQueue<? extends E> c) Создаёт очередь с приоритетами, содержащую элементы в указанной очереди с приоритетами. |
PriorityQueue(SortedSet<? extends E> c) Создаёт очередь с приоритетами, содержащую элементы в указанном упорядоченном наборе. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
add(E e) Вставляет указанный элемент в эту очередь с приоритетами. |
void |
clear() Удаляет все элементы из этой очереди с приоритетами. |
Comparator<? super E> |
comparator() Возвращает компаратор, используемый для упорядочения элементов в этой очереди, или |
boolean |
contains(Object o) Возвращает |
Iterator<E> |
iterator() Возвращает итератор по элементам в этой очереди. |
boolean |
offer(E e) Вставляет указанный элемент в эту очередь с приоритетами. |
E |
peek() Получает, но не удаляет, голову этой очереди или возвращает |
E |
poll() Получает и удаляет голову этой очереди или возвращает |
boolean |
remove(Object o) Удаляет единственный экземпляр указанного элемента из этой очереди, если он присутствует. |
int |
size() Возвращает количество элементов в этом наборе. |
Spliterator<E> |
spliterator() Создаёт отложенную привязку и быстродействующую |
Object[] |
toArray() Возвращает массив, содержащий все элементы в этой очереди. |
<T> T[] |
toArray(T[] a) Возвращает массив, содержащий все элементы в этой очереди; тип возвращаемого массива — тип указанного массива. |
Методы, унаследованные от класса java.util.AbstractQueue
addAll, element, remove Методы, унаследованные от класса java.util.AbstractCollection
containsAll, isEmpty, removeAll, retainAll, toString Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Методы, унаследованные от интерфейса java.util.Collection
containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, stream Методы, унаследованные от интерфейса java.lang.Iterable
forEach Конструкторы
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
public E peek()
Описание скопировано из интерфейса: Queue
Извлекает, но не удаляет, голову этой очереди или возвращает null , если эта очередь пустая.
- Определено в:
-
peekв интерфейсеQueue<E> - Возвращает:
- голову этой очереди или
null, если эта очередь пустая
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в интерфейсеIterable<E> - Определено в:
-
iteratorв интерфейсеCollection<E> - Определено в:
-
iteratorв классеAbstractCollection<E> - Возвращает:
- итератор по элементам в этой очереди
size
public int size()
Описание скопировано из интерфейса: Collection
Возвращает количество элементов в этой коллекции. Если эта коллекция содержит более Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.
- Указано:
-
sizeв интерфейсеCollection<E> - Указано:
-
sizeв классеAbstractCollection<E> - Возвращает:
- количество элементов в этом наборе
clear
public void clear()
Удаляет все элементы из этой очереди с приоритетами. Очередь будет пустой после возврата этого вызова.
- Указано:
-
clearв интерфейсеCollection<E> - Переопределяет:
-
clearв классеAbstractQueue<E>
poll
public E poll()
Описание скопировано из интерфейса: Queue
Возвращает и удаляет голову этой очереди или возвращает null , если эта очередь пуста.
comparator
public Comparator<? super E> comparator()
Возвращает компаратор, используемый для упорядочения элементов в этой очереди, или null , если очередь отсортирована в соответствии с естественным порядком своих элементов.
- Возвращает:
- компаратор, используемый для упорядочения этой очереди, или
null, если очередь отсортирована в соответствии с естественным порядком элементов
spliterator
public final Spliterator<E> spliterator()
Создает отложенную привязку и быстродействующий Spliterator над элементами в этой очереди.
Spliterator сообщает Spliterator.SIZED, Spliterator.SUBSIZED и Spliterator.NONNULL. Переопределяющие реализации должны документировать отчет о дополнительных значениях характеристик.
- Указано:
-
spliteratorв интерфейсеIterable<E> - Указано:
-
spliteratorв интерфейсеCollection<E> - Возвращает:
Spliteratorнад элементами в этой очереди- С:
- 1.8
© 1993, 2020, 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.