文档

Java™ 教程-Java Tutorials 中文版
Queue 实现
Trail: Collections
Lesson: Implementations

Queue 实现

Queue 实现分为通用和并发实现。

通用 Queue 实现

如前一节所述,LinkedList 实现 Queue 接口,为 add poll 等提供先进先出(FIFO)队列操作。

PriorityQueue 类是基于 heap (堆) 数据结构的优先级队列。此队列根据构造时指定的顺序对元素进行排序,这可以是元素的自然顺序或由显式 Comparator 强加的排序。

队列获取操作 — pollremovepeekelement — 访问队列头部的元素。队列的头 是关于指定排序的最小元素。如果多个元素被绑定为最小值,则头部是这些元素之一;关系被任意打破。

PriorityQueue 及其迭代器实现 CollectionIterator 接口的所有可选方法。方法 iterator 中提供的迭代器不保证以任何特定顺序遍历 PriorityQueue 的元素。对于有序遍历,请考虑使用 Arrays.sort(pq.toArray())

并发 Queue 实现

java.util.concurrent 包中包含一组同步的 Queue 接口和类。BlockingQueue 继承 Queue,其操作在获取元素时等待队列变为非空,并且在存储元素时等待队列的空间可用。此接口由以下类实现:

在 JDK 7 中,TransferQueue 是一个专用的 BlockingQueue,其中向队列添加元素的代码可以选择等待(阻塞)代码在另一个线程中获取元素。TransferQueue 只有一个实现:


Previous page: Map Implementations
Next page: Deque Implementations