1、基础概念
Deque是一个线性collection,名称 Deque是“double ended queue(双端队列)”的缩写,继承自Queue接口,支持在两端插入和移除元素。Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。
2、Deque、有三种用途:
(1)普通队列(一端进另一端出):
Queue queue = new LinkedList()
或
Deque deque = new LinkedList()
(2)双端队列(两端都可进出):
Deque deque = new LinkedList()
(3)堆栈:(Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack使用)
Deque deque = new LinkedList()
3、如何使用
3.1普通
操作 | 抛出异常 | 返回特殊值 |
---|---|---|
插入 | add(e) | offer(e) |
删除 | remove() | poll() |
检查 | element() | peek() |
压入元素(添加):add()、offer()
相同:未超出容量,从队尾压入元素,返回压入的那个元素。
区别:在超出容量时,add()方法会对抛出异常,offer()返回false
弹出元素(删除):remove()、poll()
相同:容量大于0的时候,删除并返回队头被删除的那个元素。
区别:在容量为0的时候,remove()会抛出异常,poll()返回false
获取队头元素(不删除):element()、peek()
相同:容量大于0的时候,都返回队头元素。但是不删除。
区别:容量为0的时候,element()会抛出异常,peek()返回null。
3.2队列
操作 | 首元素 | 尾元素 | ||
---|---|---|---|---|
失败抛出异常 | 失败返回fa |