所有类


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)。

此类及其迭代器可以实现 CollectionIterator 接口的所有可选 方法。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 中所有元素的数组。
<T> T[]
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%。如果指定的集合是 SortedSetPriorityQueue,那么此优先级队列将根据相同的比较器进行排序,如果集合根据其元素的自然顺序排序,则此队列也根据集合元素的自然顺序排序。否则,此优先级队列根据其元素的自然顺序排序。

参数:
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)
将指定的元素插入到优先级队列中。

指定者:
接口 BlockingQueue<E> 中的 offer
指定者:
接口 Queue<E> 中的 offer
参数:
o - 所添加的元素。
返回:
true
抛出:
ClassCastException - 如果根据优先级队列的排序规则无法将指定的元素与优先级队列中当前的元素进行比较。
NullPointerException - 如果指定的元素为 null

put

public void put(E o)
将指定的元素添加到优先级队列中。由于该队列是无界的,所以此方法永远不会被阻塞。

指定者:
接口 BlockingQueue<E> 中的 put
参数:
o - 要添加的元素。
抛出:
ClassCastException - 如果根据优先级队列的排序规则无法将该元素与优先级队列中当前的元素进行比较。
NullPointerException - 如果指定的元素为 null

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部