Java 容器之 Queue
Queue 简介
Queue
接口定义如下:
1 | public interface Queue<E> extends Collection<E> {} |
AbstractQueue 抽象类
AbstractQueue
类提供 Queue
接口的核心实现,以最大限度地减少实现 Queue
接口所需的工作。
AbstractQueue
抽象类定义如下:
1 | public abstract class AbstractQueue<E> |
Deque 接口
Deque 接口是 double ended queue 的缩写,即双端队列。Deque 继承 Queue 接口,并扩展支持在队列的两端插入和删除元素。
所以提供了特定的方法,如:
- 尾部插入时需要的 addLast(e)、offerLast(e)。
- 尾部删除所需要的 removeLast()、pollLast()。
大多数的实现对元素的数量没有限制,但这个接口既支持有容量限制的 deque,也支持没有固定大小限制的。
ArrayDeque
ArrayDeque
是 Deque
的顺序表实现。
ArrayDeque
用一个动态数组实现了栈和队列所需的所有操作。
LinkedList
LinkedList
是 Deque
的链表实现。
示例:
1 | public class LinkedListQueueDemo { |
PriorityQueue
PriorityQueue
类定义如下:
1 | public class PriorityQueue<E> extends AbstractQueue<E> |
PriorityQueue
要点:
PriorityQueue
实现了Serializable
,支持序列化。PriorityQueue
类是无界优先级队列。PriorityQueue
中的元素根据自然顺序或Comparator
提供的顺序排序。PriorityQueue
不接受 null 值元素。PriorityQueue
不是线程安全的。