Deque 接口

原文: https://docs.oracle.com/javase/tutorial/collections/interfaces/deque.html

通常发音为deck,deque 是双端队列。双端队列是元素的线性集合,支持在两个端点处插入和移除元素。 Deque接口是比StackQueue更丰富的抽象数据类型,因为它同时实现了堆栈和队列。 Deque 接口定义了访问Deque实例两端元素的方法。提供了插入,移除和检查元素的方法。 ArrayDequeLinkedList 等预定义类实现Deque接口。

请注意,Deque接口既可以用作后进先出堆栈,也可以用作先进先出队列。 Deque接口中给出的方法分为三个部分:

插入

addfirstofferFirst方法在Deque实例的开头插入元素。方法addLastofferLastDeque实例的末尾插入元素。当Deque实例的容量受到限制时,首选方法是offerFirstofferLast,因为如果addFirst已满,addFirst可能无法抛出异常。

去掉

removeFirstpollFirst方法从Deque实例的开头删除元素。 removeLastpollLast方法从末尾删除元素。如果Deque为空,方法pollFirstpollLast返回null,而如果Deque实例为空,方法removeFirstremoveLast则抛出异常。

取回

方法getFirstpeekFirst检索Deque实例的第一个元素。这些方法不会从Deque实例中删除该值。类似地,方法getLastpeekLast检索最后一个元素。如果deque实例为空,则方法getFirstgetLast会抛出异常,而peekFirstpeekLast方法返回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