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。
