一般讀做deck
,deque
是雙端隊列,雙端隊列是元素的線性集合,支持在兩個端點處插入和移除元素,Deque
接口是比Stack
和Queue
更豐富的抽象數據類型,由於它同時實現堆棧和隊列。Deque接口定義了訪問Deque
實例兩端元素的方法,提供了插入、移除和檢查元素的方法,ArrayDeque和LinkedList等預約義類實現了Deque
接口。html
請注意,Deque
接口既能夠用做後進先出堆棧,也能夠用做先進先出隊列,Deque接口中給出的方法分爲三個部分。java
addfirst
和offerFirst
方法在Deque
實例的開頭插入元素,方法addLast
和offerLast
在Deque
實例的末尾插入元素,當Deque
實例的容量受到限制時,首選方法是offerFirst
和offerLast
,由於若是隊列已滿,則addFirst
可能沒法拋出異常。segmentfault
removeFirst
和pollFirst
方法從Deque
實例的開頭刪除元素,removeLast
和pollLast
方法從末尾刪除元素,若是Deque
爲空,則方法pollFirst
和pollLast
返回null
,而若是Deque
實例爲空,則方法removeFirst
和removeLast
會拋出異常。api
方法getFirst
和peekFirst
檢索Deque
實例的第一個元素,這些方法不會從Deque
實例中刪除該值。一樣,方法getLast
和peekLast
檢索最後一個元素,若是deque
實例爲空,則方法getFirst
和getLast
會拋出異常,而方法peekFirst
和peekLast
將返回NULL
。oracle
下面列出了12種Deque
元素的插入、移除和檢索方法:code
操做類型 | 第一個元素(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
。htm