双端队列(deque)通常发音为deck,是双端队列(double-ended-queue)的缩写。双端队列是元素的线性集合,支持在两个端点处元素的插入和移除。Deque接口是比StackQueue更丰富的抽象数据类型,因为它同时实现了堆栈和队列。Deque接口定义用于访问Deque实例两端的元素的方法。提供了用于插入,删除和检查元素的方法。诸如ArrayDequeLinkedList之类的预定义类实现了Deque接口。
请注意,Deque接口既可以用作后进先出堆栈,又可以用作先进先出队列。Deque接口中给出的方法分为三个部分:

插入

addfirstofferFirst方法在Deque实例的开头插入元素。方法addLastofferLastDeque实例的末尾插入元素。当Deque实例的容量受到限制时,首选方法为offerFirstofferLast,因为addFirst在已满的情况下可能无法抛出异常。

去掉

removeFirstpollFirst方法从Deque实例的开头删除元素。removeLastpollLast方法从末尾删除元素。 如果Deque为空,则方法pollFirstpollLast返回null;如果Deque实例为空,则方法removeFirstremoveLast抛出异常。

取回

方法getFirstpeekFirst检索Deque实例的第一个元素。这些方法不会从Deque实例中删除值。同样,方法getLastpeekLast检索最后一个元素。如果双端队列实例为空,则方法getFirstgetLast抛出异常,而方法peekFirstpeekLast返回NULL
下表总结了Deque元素的12种插入,删除和重新绑定方法:
双端队列方法

操作类型 第一个元素(Deque实例开始) 最后一个元素(Deque实例结束)
插入 addFirst(e)
offerFirst(e)
addLast(e)
offerLast(e)
去掉 removeFirst()
pollFirst()
removeLast()
pollLast()
检查 getFirst()
peekFirst()
getLast()
peekLast()

除了这些用于插入,删除和检查Deque实例的基本方法之外,Deque接口还具有一些其他预定义的方法。其中之一是removeFirstOccurence,如果指定元素在Deque实例中存在,则此方法将删除该元素的首次出现。如果元素不存在,则Deque实例保持不变。另一个类似的方法是removeLastOccurence; 此方法删除Deque实例中指定元素的最后一次出现。这些方法的返回类型为boolean,如果元素存在于Deque实例中,则它们返回true