Deque 接口
原文: https://docs.oracle.com/javase/tutorial/collections/interfaces/deque.html
通常发音为deck
,deque 是双端队列。双端队列是元素的线性集合,支持在两个端点处插入和移除元素。 Deque
接口是比Stack
和Queue
更丰富的抽象数据类型,因为它同时实现了堆栈和队列。 Deque
接口定义了访问Deque
实例两端元素的方法。提供了插入,移除和检查元素的方法。 ArrayDeque
和 LinkedList
等预定义类实现Deque
接口。
请注意,Deque
接口既可以用作后进先出堆栈,也可以用作先进先出队列。 Deque
接口中给出的方法分为三个部分:
插入
addfirst
和offerFirst
方法在Deque
实例的开头插入元素。方法addLast
和offerLast
在Deque
实例的末尾插入元素。当Deque
实例的容量受到限制时,首选方法是offerFirst
和offerLast
,因为如果addFirst
已满,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
。
插入,删除和检索 Deque 元素的 12 种方法总结在下表中:
Deque Methods
| 操作类型 | 第一个元素(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
。