文档

Java™ 教程-Java Tutorials 中文版
Deque 接口
Trail: Collections
Lesson: Interfaces

Deque 接口

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

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

插入

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

移除

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

获取

方法 getFirstpeekFirst 获取 Deque 实例的第一个元素。这些方法不会从 Deque 实例中移除该值。类似地,方法 getLastpeekLast 获取最后一个元素。如果 deque 实例为空,则方法 getFirstgetLast 会抛出异常,而方法 peekFirstpeekLast 返回 NULL

插入,移除和检索(译注:前文中检查为 examine,获取为 retrieve,此处为检索 retieval 应该是错误,可能应该为 retrieval) Deque 元素的 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


Previous page: The Queue Interface
Next page: The Map Interface