转载

Java™ 教程(Queue实现)

Queue实现

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

通用Queue实现

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

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

队列检索操作 — pollremovepeekelement 访问队列开头的元素,就指定的顺序而言,队列的头是最小的元素,如果多个元素的值最小,那么头是这些元素之一;关系被任意打破。

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

并发Queue实现

java.util.concurrent 包包含一组同步的 Queue 接口和类, BlockingQueue 扩展了 Queue 的操作,这些操作在检索元素时等待队列变为非空,在存储元素时等待队列中的空间变为可用,该接口由以下类实现:

  • LinkedBlockingQueue — 由链节点支持的可选有界FIFO阻塞队列。
  • ArrayBlockingQueue — 由数组支持的有界FIFO阻塞队列。
  • PriorityBlockingQueue — 由堆支持的无界阻塞优先级队列。
  • DelayQueue — 由堆支持的基于时间的调度队列。
  • SynchronousQueue — 一个简单的集合机制,使用 BlockingQueue 接口。

在JDK 7中, TransferQueue 是专门的 BlockingQueue ,其中将元素添加到队列中的代码可以选择等待(阻塞)另一个线程中的代码来检索该元素, TransferQueue 有一个实现:

  • LinkedTransferQueue — 基于链节点的无界 TransferQueue

上一篇:Map实现

原文  https://segmentfault.com/a/1190000020791518
正文到此结束
Loading...