Deque
Deque是一个双端队列接口(double ended queue),继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。
Deque有三种用途:- 普通队列(一端进另一端出):
Queue queue = new LinkedList()
或
Deque deque = new LinkedList()
- 双端队列(两端都可进出)
- 堆栈
注意:Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack使用。Deque堆栈操作方法:push()、pop()、peek()。
Queue的12个方法分类:
压入元素(添加):- addFirst:在队列的前面立即加入该元素
- offerFirst:在该元素的前面插入指定的元素,除非它违反容量限制。返回 boolean
- addLast:在队列的后面立即加入该元素
- offerLast:在该元素的后面插入指定的元素,除非它违反容量限制。返回 boolean
相同:未超出容量,从队尾压入元素,返回压入的那个元素。
区别:在超出容量时,add()方***对抛出异常,offer()返回false
_____________________________________________________________________
弹出元素(删除):remove()、poll()
- removeFirst:移除队列的第一个元素
- pollFirst:移除队列的第一个元素,除非它为空。返回 boolean
- removeLast:移除队列的最后个元素
- pollLast:移除队列的最后个元素,除非它为空 。返回 boolean
区别:在容量为0的时候,remove()会抛出异常,poll()返回false
____________________________________________________________________
获取队头元素(不删除):element()、peek()
- getFirst:获取队列的第一个元素
- peekFirst:获取队列的第一个元素。队列为空返回 null
- getLast:获取队列的最后一个元素
- peekLast:获取队列的第一个元素。队列为空返回 null
区别:容量为0的时候,element()会抛出异常,peek()返回null。