一般读做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