Queue
实现分为通用实现和并发实现。html
如上一节所述,LinkedList
实现了Queue
接口,为add
、poll
等提供了先进先出(FIFO)队列操做。java
PriorityQueue类是基于堆数据结构的优先级队列,此队列根据构造时指定的顺序对元素进行排序,这些顺序能够是元素的天然顺序,也能够是显式Comparator
施加的顺序。segmentfault
队列检索操做 — poll
、remove
、peek
、element
访问队列开头的元素,就指定的顺序而言,队列的头是最小的元素,若是多个元素的值最小,那么头是这些元素之一;关系被任意打破。api
PriorityQueue
及其迭代器实现Collection
和Iterator
接口的全部可选方法,不保证方法iterator
中提供的迭代器以任何特定顺序遍历PriorityQueue
的元素,对于有序遍历,请考虑使用Arrays.sort(pq.toArray())
。数组
java.util.concurrent
包包含一组同步的Queue
接口和类,BlockingQueue扩展了Queue
的操做,这些操做在检索元素时等待队列变为非空,在存储元素时等待队列中的空间变为可用,该接口由如下类实现:数据结构
BlockingQueue
接口。在JDK 7中,TransferQueue是专门的BlockingQueue
,其中将元素添加到队列中的代码能够选择等待(阻塞)另外一个线程中的代码来检索该元素,TransferQueue
有一个实现:并发
TransferQueue
。