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實現類為有限容量時,優(yōu)先使用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時表示元素不存在于隊列中,并且隊列沒有改變。