|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util.concurrent
类 PriorityBlockingQueue<E>
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.concurrent.PriorityBlockingQueue<E>
- 类型参数:
-
E
- 此集合中所保存元素的类型。
- 所有已实现的接口:
- Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
-
public class PriorityBlockingQueue<E>
- extends AbstractQueue<E>
- implements BlockingQueue<E>, Serializable
一个无界的阻塞队列,它使用与类 PriorityQueue
相同的顺序规则,并且提供了阻塞检索的操作。虽然此队列逻辑上是无界的,但是由于资源被耗尽,所以试图执行添加操作可能会失败(导致 OutOfMemoryError)。此类不允许使用 null 元素。依赖自然顺序的优先级队列也不允许插入不可比较的对象(因为这样做会抛出 ClassCastException)。
此类及其迭代器可以实现 Collection
和 Iterator
接口的所有可选 方法。iterator()
方法中所提供的迭代器并不 保证以特定的顺序遍历 PriorityBlockingQueue 的元素。如果需要有序地遍历,则应考虑使用 Arrays.sort(pq.toArray())。
此类是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.5
- 另请参见:
- 序列化表格
构造方法摘要 | |
---|---|
PriorityBlockingQueue() 用默认的初始容量 (11) 创建一个 PriorityBlockingQueue,并根据元素的自然顺序排序其元素(使用 Comparable)。 |
|
PriorityBlockingQueue(Collection<? extends E> c) 创建一个包含指定集合中元素的 PriorityBlockingQueue。 |
|
PriorityBlockingQueue(int initialCapacity) 使用指定的初始容量创建一个 PriorityBlockingQueue,并根据元素的自然顺序排序其元素(使用 Comparable)。 |
|
PriorityBlockingQueue(int initialCapacity, Comparator<? super E> comparator) 使用指定的初始容量创建一个 PriorityBlockingQueue,并根据指定的比较器排序其元素。 |
方法摘要 | ||
---|---|---|
boolean |
add(E o) 向此队列添加指定的元素。 |
|
void |
clear() 完全移除队列中的所有元素。 |
|
Comparator<? super E> |
comparator() 返回对此集合进行排序的比较器,如果此集合根据其元素的自然顺序排序(使用 Comparable),则返回 null。 |
|
boolean |
contains(Object o) 如果此 collection 包含指定的元素,则返回 true。 |
|
int |
drainTo(Collection<? super E> c) 移除此队列中所有可用的元素,并将它们添加到给定 collection 中。 |
|
int |
drainTo(Collection<? super E> c, int maxElements) 最多从此队列中移除给定数量的可用元素,并将这些元素添加到给定 collection 中。 |
|
Iterator<E> |
iterator() 返回对此队列中的元素进行迭代的迭代器。 |
|
boolean |
offer(E o) 将指定的元素插入到优先级队列中。 |
|
boolean |
offer(E o, long timeout, TimeUnit unit) 将指定的元素插入到优先级队列中。 |
|
E |
peek() 检索,但是不移除此队列的头,如果此队列为空,则返回 null。 |
|
E |
poll() 检索并移除此队列的头,如果此队列为空,则返回 null。 |
|
E |
poll(long timeout, TimeUnit unit) 检索并移除此队列的头部,如果此队列中没有任何元素,则等待指定等待的时间(如果有必要)。 |
|
void |
put(E o) 将指定的元素添加到优先级队列中。 |
|
int |
remainingCapacity() 总是返回 Integer.MAX_VALUE,因为 PriorityBlockingQueue 没有容量限制。 |
|
boolean |
remove(Object o) 从队列中移除指定元素的单个实例(如果存在)。 |
|
int |
size() 返回此 collection 中的元素数。 |
|
E |
take() 检索并移除此队列的头部,如果此队列不存在任何元素,则一直等待。 |
|
Object[] |
toArray() 返回包含此 collection 中所有元素的数组。 |
|
|
toArray(T[] a) 返回包含此 collection 中所有元素的数组;返回数组的运行时类型是指定数组的类型。 |
|
String |
toString() 返回此 collection 的字符串表示形式。 |
从类 java.util.AbstractQueue 继承的方法 |
---|
addAll, element, remove |
从类 java.util.AbstractCollection 继承的方法 |
---|
containsAll, isEmpty, removeAll, retainAll |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从接口 java.util.Queue 继承的方法 |
---|
element, remove |
从接口 java.util.Collection 继承的方法 |
---|
addAll, containsAll, equals, hashCode, isEmpty, removeAll, retainAll |
构造方法详细信息 |
---|
PriorityBlockingQueue
public PriorityBlockingQueue()
- 用默认的初始容量 (11) 创建一个 PriorityBlockingQueue,并根据元素的自然顺序排序其元素(使用 Comparable)。
PriorityBlockingQueue
public PriorityBlockingQueue(int initialCapacity)
-
使用指定的初始容量创建一个 PriorityBlockingQueue,并根据元素的自然顺序排序其元素(使用 Comparable)。
- 参数:
-
initialCapacity
- 此优先级队列的初始容量。 - 抛出:
-
IllegalArgumentException
- 如果 initialCapacity 小于 1。
PriorityBlockingQueue
public PriorityBlockingQueue(int initialCapacity, Comparator<? super E> comparator)
-
使用指定的初始容量创建一个 PriorityBlockingQueue,并根据指定的比较器排序其元素。
- 参数:
-
initialCapacity
- 此优先级队列的初始容量。 -
comparator
- 用于对此优先级队列进行排序的比较器。如果参数为 null,则根据元素的自然顺序排序。 - 抛出:
-
IllegalArgumentException
- 如果 initialCapacity 小于 1。
PriorityBlockingQueue
public PriorityBlockingQueue(Collection<? extends E> c)
-
创建一个包含指定集合中元素的 PriorityBlockingQueue。优先级队列的初始容量是指定集合大小的 110%。如果指定的集合是
SortedSet
或PriorityQueue
,那么此优先级队列将根据相同的比较器进行排序,如果集合根据其元素的自然顺序排序,则此队列也根据集合元素的自然顺序排序。否则,此优先级队列根据其元素的自然顺序排序。- 参数:
-
c
- 集合,其元素将被添加到此优先级队列中。 - 抛出:
-
ClassCastException
- 如果根据优先级队列的排序规则无法相互比较指定集合的元素。 -
NullPointerException
- 如果 c 或其中的任意元素为 null。
方法详细信息 |
---|
add
public boolean add(E o)
- 向此队列添加指定的元素。
-
- 指定者:
-
接口
Collection<E>
中的add
- 指定者:
-
接口
BlockingQueue<E>
中的add
- 覆盖:
-
类
AbstractQueue<E>
中的add
-
- 参数:
-
o
- 要添加的元素。 - 返回:
- true(按照 Collection.add 的常规协定)。
- 抛出:
-
NullPointerException
- 如果指定的元素为 null。 -
ClassCastException
- 如果根据优先级队列的排序规则,无法将指定的元素与优先级队列中当前的元素进行比较。
comparator
public Comparator<? super E> comparator()
- 返回对此集合进行排序的比较器,如果此集合根据其元素的自然顺序排序(使用 Comparable),则返回 null。
-
-
- 返回:
- 对此集合进行排序的比较器,如果此集合根据其元素的自然顺序排序,则返回 null。
offer
public boolean offer(E o)
- 将指定的元素插入到优先级队列中。
-
- 参数:
-
o
- 所添加的元素。 - 返回:
- true
- 抛出:
-
ClassCastException
- 如果根据优先级队列的排序规则无法将指定的元素与优先级队列中当前的元素进行比较。 -
NullPointerException
- 如果指定的元素为 null。
put
public void put(E o)
- 将指定的元素添加到优先级队列中。由于该队列是无界的,所以此方法永远不会被阻塞。
-
- 指定者:
-
接口
BlockingQueue<E>
中的put
-
- 参数:
-
o
- 要添加的元素。 - 抛出:
-
ClassCastException
- 如果根据优先级队列的排序规则无法将该元素与优先级队列中当前的元素进行比较。 -
NullPointerException
- 如果指定的元素为 null。