Deque接口
通常读作deck
,deque
是双端队列,双端队列是元素的线性集合,支持在两个端点处插入和移除元素,Deque
接口是比Stack
和Queue
更丰富的抽象数据类型,因为它同时实现堆栈和队列。Deque接口定义了访问Deque
实例两端元素的方法,提供了插入、移除和检查元素的方法,ArrayDeque和LinkedList等预定义类实现了Deque
接口。
请注意,Deque
接口既可以用作后进先出堆栈,也可以用作先进先出队列,Deque接口中给出的方法分为三个部分。
插入
addfirst
和offerFirst
方法在Deque
实例的开头插入元素,方法addLast
和offerLast
在Deque
实例的末尾插入元素,当Deque
实例的容量受到限制时,首选方法是offerFirst
和offerLast
,因为如果队列已满,则addFirst
可能无法抛出异常。
移除
removeFirst
和pollFirst
方法从Deque
实例的开头删除元素,removeLast
和pollLast
方法从末尾删除元素,如果Deque
为空,则方法pollFirst
和pollLast
返回null
,而如果Deque
实例为空,则方法removeFirst
和removeLast
会抛出异常。
检索
方法getFirst
和peekFirst
检索Deque
实例的第一个元素,这些方法不会从Deque
实例中删除该值。同样,方法getLast
和peekLast
检索最后一个元素,如果deque
实例为空,则方法getFirst
和getLast
会抛出异常,而方法peekFirst
和peekLast
将返回NULL
。
下面列出了12种Deque
元素的插入、移除和检索方法:
操作类型 | 第一个元素(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
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。