Queue接口
Queue接口继承Collection<E>接口,提供了队列的主要操作:
boolean add(E e);插入元素,如果队列没有空间的话,插入失败,会抛出IllegalStateException异常
boolean offer(E e);插入元素,对于有插入限制(例如容量限定)的队列,offer方法一般优于add操作。
E remove();取出并删除队首元素,当队列为空时,抛出异常。
E poll(); 取出并删除队首元素,当队列为空时,返回null。
E element(); 取出不删除队首元素,当队列为空的时候抛出异常,与peak不同。
E peek(); 取出不删除队首元素,当队列为空的时候返回null。
PriorityQueue public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable
也可以根据 Comparator 来指定
依靠自然排序的优先级队列还不允许插入不可比较的对象(这样做可能导致 ClassCastException)。
此队列的头是按指定排序方式的
队列检索操作 poll、remove、peek 和 element 访问处于队列头的元素。
优先级队列是无界的,但是有一个
它总是至少与队列的大小相同。随着不断向优先级队列添加元素,其容量会自动增加。无需指定容量增加策略的细节。
为 remove(Object) 和 contains(Object) 方法提供线性时间;
为检索方法(peek、element 和 size)提供固定时间。
至于原因可参考下面关于PriorityQueue的内部实现
如果需要按顺序遍历,请考虑使用 Arrays.sort(pq.toArray())。
PriorityQueue()
使用默认的初始容量(11)创建一个 PriorityQueue,并根据其自然顺序来排序其元素(使用
PriorityQueue(int initialCapacity)
使用指定的初始容量创建一个 PriorityQueue,并根据其自然顺序来排序其元素(使用
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器
注意7:此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选 方法。