Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохранен в этом набореpublic class PriorityBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
PriorityQueue
и предоставления, блокирующие операции извлечения. В то время как эта очередь является логически неограниченными, предпринятыми дополнениями, может перестать работать из-за исчерпания ресурса (порождение OutOfMemoryError
). Этот класс не разрешает null
элементы. Приоритетная очередь, полагающаяся на естественное упорядочивание также, не разрешает вставку несопоставимых объектов (выполнение так результаты в ClassCastException
). Этот класс и его iterator реализуют все дополнительные методы Collection
и Iterator
интерфейсы. Iterator обеспечил в методе iterator()
как гарантируют, не пересечет элементы PriorityBlockingQueue в любом определенном порядке. Если Вы нуждаетесь в упорядоченном обходе, рассматриваете использование Arrays.sort(pq.toArray())
. Кроме того, метод drainTo
может использоваться, чтобы удалить некоторых или все элементы в первоочередном заказе и разместить их в другой набор.
Операции на этом классе не делают гарантий об упорядочивании элементов с равным приоритетом. Если Вы должны осуществить упорядочивание, можно определить пользовательские классы или компараторы, которые используют вторичный ключ, чтобы повредиться, связывает основные приоритетные значения. Например, вот класс, который применяет первым прибыл - первым убыл повреждение связи к сопоставимым элементам. Чтобы использовать это, Вы вставили бы a new FIFOEntry(anEntry)
вместо простого объекта записи.
class FIFOEntry<E extends Comparable<? super E>>
implements Comparable<FIFOEntry<E>> {
static final AtomicLong seq = new AtomicLong(0);
final long seqNum;
final E entry;
public FIFOEntry(E entry) {
seqNum = seq.getAndIncrement();
this.entry = entry;
}
public E getEntry() { return entry; }
public int compareTo(FIFOEntry<E> other) {
int res = entry.compareTo(other.entry);
if (res == 0 && other.entry != this.entry)
res = (seqNum < other.seqNum ? -1 : 1);
return res;
}
}
Этот класс является элементом Платформы Наборов Java.
Конструктор и Описание |
---|
PriorityBlockingQueue()
Создает a
PriorityBlockingQueue с начальной емкостью по умолчанию (11), который упорядочивает ее элементы согласно их естественному упорядочиванию. |
PriorityBlockingQueue(Collection<? extends E> c)
Создает a
PriorityBlockingQueue содержа элементы в указанном наборе. |
PriorityBlockingQueue(int initialCapacity)
Создает a
PriorityBlockingQueue с указанной начальной емкостью, которая упорядочивает ее элементы согласно их естественному упорядочиванию. |
PriorityBlockingQueue(int initialCapacity, Comparator<? super E> comparator)
Создает a
PriorityBlockingQueue с указанной начальной емкостью, которая упорядочивает ее элементы согласно указанному компаратору. |
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Вставляет указанный элемент в эту приоритетную очередь.
|
void |
clear()
Атомарно удаляет все элементы от этой очереди.
|
Comparator<? super E> |
comparator()
Возвращает компаратор, используемый, чтобы упорядочить элементы в этой очереди, или
null если эта очередь использует естественное упорядочивание своих элементов. |
boolean |
contains(Object o)
Возвраты
true если эта очередь содержит указанный элемент. |
int |
drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их к данному набору.
|
int |
drainTo(Collection<? super E> c, int maxElements)
Удаляет самое большее данное число доступных элементов от этой очереди и добавляет их к данному набору.
|
Iterator<E> |
iterator()
Возвращает iterator по элементам в этой очереди.
|
boolean |
offer(E e)
Вставляет указанный элемент в эту приоритетную очередь.
|
boolean |
offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту приоритетную очередь.
|
E |
peek()
Получает, но не удаляет, глава этой очереди, или возвращает null, если эта очередь пуста.
|
E |
poll()
Получает и удаляет главу этой очереди, или возвращает null, если эта очередь пуста.
|
E |
poll(long timeout, TimeUnit unit)
Получает и удаляет главу этой очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
void |
put(E e)
Вставляет указанный элемент в эту приоритетную очередь.
|
int |
remainingCapacity()
Всегда возвраты
Integer.MAX_VALUE потому что a PriorityBlockingQueue не ограниченная емкость. |
boolean |
remove(Object o)
Удаляет единственный экземпляр указанного элемента от этой очереди, если это присутствует.
|
int |
size()
Возвращает число элементов в этом наборе.
|
E |
take()
Получает и удаляет главу этой очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
Объект[] |
toArray()
Возвращает массив, содержащий все элементы в этой очереди.
|
<T> T[] |
toArray(T[] a)
Возвращает массив, содержащий все элементы в этой очереди; тип времени выполнения возвращенного массива является типом указанного массива.
|
Строка |
toString()
Возвращает строковое представление этого набора.
|
addAll, element, remove
containsAll, isEmpty, removeAll, retainAll
public PriorityBlockingQueue()
PriorityBlockingQueue
с начальной емкостью по умолчанию (11), который упорядочивает ее элементы согласно их естественному упорядочиванию.public PriorityBlockingQueue(int initialCapacity)
PriorityBlockingQueue
с указанной начальной емкостью, которая упорядочивает ее элементы согласно их естественному упорядочиванию.initialCapacity
- начальная емкость для этой приоритетной очередиIllegalArgumentException
- если initialCapacity
меньше чем 1public PriorityBlockingQueue(int initialCapacity, Comparator<? super E> comparator)
PriorityBlockingQueue
с указанной начальной емкостью, которая упорядочивает ее элементы согласно указанному компаратору.initialCapacity
- начальная емкость для этой приоритетной очередиcomparator
- компаратор, который будет использоваться, чтобы упорядочить эту приоритетную очередь. Если null
, естественное упорядочивание элементов будет использоваться.IllegalArgumentException
- если initialCapacity
меньше чем 1public PriorityBlockingQueue(Collection<? extends E> c)
PriorityBlockingQueue
содержа элементы в указанном наборе. Если указанный набор является a SortedSet
или a PriorityQueue
, этой приоритетной очереди упорядочат согласно тому же самому упорядочиванию. Иначе, этой приоритетной очереди упорядочат согласно естественному упорядочиванию ее элементов.c
- набор, элементы которого должны быть помещены в эту приоритетную очередьClassCastException
- если элементы указанного набора не могут быть по сравнению с друг другом согласно приоритетному упорядочиванию очередиNullPointerException
- если указанный набор или какой-либо из его элементов являются нулемpublic boolean add(E e)
add
в интерфейсе Collection<E>
add
в интерфейсе BlockingQueue<E>
add
в интерфейсе Queue<E>
add
в классе AbstractQueue<E>
e
- элемент, чтобы добавитьtrue
(как определено Collection.add(E)
)ClassCastException
- если указанный элемент не может быть по сравнению с элементами в настоящий момент в приоритетной очереди согласно приоритетному упорядочиванию очередиNullPointerException
- если указанный элемент является нулемpublic boolean offer(E e)
false
.offer
в интерфейсе BlockingQueue<E>
offer
в интерфейсе Queue<E>
e
- элемент, чтобы добавитьtrue
(как определено Queue.offer(E)
)ClassCastException
- если указанный элемент не может быть по сравнению с элементами в настоящий момент в приоритетной очереди согласно приоритетному упорядочиванию очередиNullPointerException
- если указанный элемент является нулемpublic void put(E e)
put
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьClassCastException
- если указанный элемент не может быть по сравнению с элементами в настоящий момент в приоритетной очереди согласно приоритетному упорядочиванию очередиNullPointerException
- если указанный элемент является нулемpublic boolean offer(E e, long timeout, TimeUnit unit)
false
.offer
в интерфейсе BlockingQueue<E>
e
- элемент, чтобы добавитьtimeout
- Этот параметр игнорируется, поскольку метод никогда не блокируетunit
- Этот параметр игнорируется, поскольку метод никогда не блокируетtrue
(как определено BlockingQueue.offer
)ClassCastException
- если указанный элемент не может быть по сравнению с элементами в настоящий момент в приоритетной очереди согласно приоритетному упорядочиванию очередиNullPointerException
- если указанный элемент является нулемpublic E poll()
Queue
public E take() throws InterruptedException
BlockingQueue
take
в интерфейсе BlockingQueue<E>
InterruptedException
- если прервано, ожидаяpublic E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingQueue
poll
в интерфейсе BlockingQueue<E>
timeout
- сколько времени ожидать перед отказом в модулях unitunit
- TimeUnit, определяющий, как интерпретировать параметр timeoutInterruptedException
- если прервано, ожидаяpublic E peek()
Queue
public Comparator<? super E> comparator()
null
если эта очередь использует естественное упорядочивание своих элементов.null
если эта очередь использует естественное упорядочивание своих элементовpublic int size()
Collection
size
в интерфейсе Collection<E>
size
в классе AbstractCollection<E>
public int remainingCapacity()
Integer.MAX_VALUE
потому что a PriorityBlockingQueue
не ограниченная емкость.remainingCapacity
в интерфейсе BlockingQueue<E>
Integer.MAX_VALUE
всегдаpublic boolean remove(Object o)
e
так, что o.equals(e)
, если эта очередь содержит один или более таких элементов. Возвраты true
если и только если эта очередь, содержавшая указанный элемент (или эквивалентно, если эта очередь изменилась в результате вызова).remove
в интерфейсе Collection<E>
remove
в интерфейсе BlockingQueue<E>
remove
в классе AbstractCollection<E>
o
- элемент, который будет удален из этой очереди, если существующийtrue
если эта очередь изменилась в результате вызоваpublic boolean contains(Object o)
true
если эта очередь содержит указанный элемент. Более формально, возвраты true
если и только если эта очередь содержит по крайней мере один элемент e
так, что o.equals(e)
.contains
в интерфейсе Collection<E>
contains
в интерфейсе BlockingQueue<E>
contains
в классе AbstractCollection<E>
o
- объект, который будет проверен на включение в этой очередиtrue
если эта очередь содержит указанный элементpublic Object[] toArray()
Возвращенный массив будет "безопасен" в этом, никакие ссылки на него не сохраняются этой очередью. (Другими словами этот метод должен выделить новый массив). Вызывающая сторона таким образом свободна изменить возвращенный массив.
Этот метод действует как мост между основанными на массиве и основанными на наборе API.
toArray
в интерфейсе Collection<E>
toArray
в классе AbstractCollection<E>
public String toString()
AbstractCollection
String.valueOf(Object)
.toString
в классе AbstractCollection<E>
public int drainTo(Collection<? super E> c)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вUnsupportedOperationException
- если добавление элементов не поддерживается указанным наборомClassCastException
- если класс элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
drainTo
в интерфейсе BlockingQueue<E>
c
- набор, чтобы передать элементы вmaxElements
- максимальное количество элементов, чтобы передатьUnsupportedOperationException
- если добавление элементов не поддерживается указанным наборомClassCastException
- если класс элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуNullPointerException
- если указанный набор является нулемIllegalArgumentException
- если указанный набор является этой очередью, или некоторое свойство элемента этой очереди препятствует тому, чтобы это было добавлено к указанному наборуpublic void clear()
clear
в интерфейсе Collection<E>
clear
в классе AbstractQueue<E>
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>
a
- массив, в который должны быть сохранены элементы очереди, если это является достаточно большим; иначе, новый массив того же самого типа времени выполнения выделяется с этой цельюArrayStoreException
- если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этой очередиNullPointerException
- если указанный массив является нулемpublic Iterator<E> iterator()
Возвращенный iterator "слабо непротиворечивый" iterator, который никогда не будет бросать ConcurrentModificationException
, и гарантии, чтобы пересечь элементы, поскольку они существовали на конструкцию iterator, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.
iterator
в интерфейсе Iterable<E>
iterator
в интерфейсе Collection<E>
iterator
в классе AbstractCollection<E>
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.