Deque

Deque是一个双端队列接口(double ended queue),继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。
Deque有三种用途:
  • 普通队列(一端进另一端出):
Queue queue = new LinkedList()
Deque deque = new LinkedList()
  • 双端队列(两端都可进出)
Deque deque = new LinkedList()
  • 堆栈
Deque deque = new ArrayDeque()
注意:Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack使用。Deque堆栈操作方法:push()、pop()、peek()。

Queue的12个方法分类:

压入元素(添加):
  • addFirst:在队列的前面立即加入该元素
  • offerFirst:在该元素的前面插入指定的元素,除非它违反容量限制。返回 boolean
  • addLast:在队列的后面立即加入该元素
  • offerLast:在该元素的后面插入指定的元素,除非它违反容量限制。返回 boolean
add()、offer()
相同:未超出容量,从队尾压入元素,返回压入的那个元素。
区别:在超出容量时,add()方***对抛出异常,offer()返回false
_____________________________________________________________________
弹出元素(删除):remove()、poll()
  • removeFirst:移除队列的第一个元素
  • pollFirst:移除队列的第一个元素,除非它为空。返回 boolean
  • removeLast:移除队列的最后个元素
  • pollLast:移除队列的最后个元素,除非它为空 。返回 boolean
相同:容量大于0的时候,删除并返回队头被删除的那个元素。
区别:在容量为0的时候,remove()会抛出异常,poll()返回false
____________________________________________________________________
获取队头元素(不删除):element()、peek()
  • getFirst:获取队列的第一个元素
  • peekFirst:获取队列的第一个元素。队列为空返回 null
  • getLast:获取队列的最后一个元素
  • peekLast:获取队列的第一个元素。队列为空返回 null
相同:容量大于0的时候,都返回队头元素。但是不删除。
区别:容量为0的时候,element()会抛出异常,peek()返回null。