Deque表示双端队列。双端队列是在两端都可以进行插入和删除的队列。Deque是一个比Stack和Queue功能更强大的接口,它同时实现了栈和队列的功能。ArrayDeque和LinkeList实现了Deque接口。
注意:Deque既可以用作后进先出的栈,也可以用作先进先出的队列。
Deque接口定义如下:
public interface Deque<E> extends Queue<E> {
// *** Deque methods ***
void addFirst(E e);
void addLast(E e);
boolean offerFirst(E e);
boolean offerLast(E e);
E removeFirst();
E removeLast();
E pollFirst();
E pollLast();
E getFirst();
E getLast();
E peekFirst();
E peekLast();
boolean removeFirstOccurrence(Object o);
boolean removeLastOccurrence(Object o);
// *** Queue methods ***
boolean add(E e);
boolean offer(E e);
E remove();
E poll();
E element();
E peek();
// *** Stack methods ***
void push(E e);
E pop();
// *** Collection methods ***
boolean remove(Object o);
boolean contains(Object o);
public int size();
Iterator<E> iterator();
Iterator<E> descendingIterator();
}
双端队列方法

双端队列方法
插入
addFirst和offerFirst在Deque实例头部插入元素。
addLast和offerLast在Deque实例尾部插入元素。
当Deque实现类为有限容量时,优先使用offerFirst和offerLast,因为addFirst在队列满的时候可能会插入失败而抛出异常。
删除
removeFirst和pollFirst从Deque实例头部移除元素。
removeLast和pollLast从Deque实例尾部移除元素。
当Deque为空时,pollFirst和pollLast将会返回null,而removeFirst和removeLast将会抛出异常。
检索
getFirst和peekFirst获取Deque实例的第一个元素,但是不会将元素从Deque实例中删除。类似地,getLast和peekLast获取最后一个元素。当Deque为空时,getFirst和getLast将会抛出异常,而peekFirst和peekLast将会返回null。
除了基本的插入、删除和检索方法外,还有两个预定义的方法:removeFirstOccurence和removeLastOccurence。这两个方法见名知意。返回true的时候表示元素存在于队列,并且已经被删除。返回false时表示元素不存在于队列中,并且队列没有改变。