Deque
表示雙端隊列歇拆。雙端隊列是在兩端都可以進行插入和刪除的隊列。Deque
是一個比Stack
和Queue
功能更強大的接口宁仔,它同時實現(xiàn)了棧和隊列的功能留潦。ArrayDeque
和LinkeList
實現(xiàn)了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
實現(xiàn)類為有限容量時倒源,優(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
榔袋。
除了基本的插入周拐、刪除和檢索方法外,還有兩個預(yù)定義的方法:removeFirstOccurence
和removeLastOccurence
凰兑。這兩個方法見名知意妥粟。返回true
的時候表示元素存在于隊列,并且已經(jīng)被刪除吏够。返回false
時表示元素不存在于隊列中勾给,并且隊列沒有改變滩报。