# Deque 接口
一个线性 collection,支持在两端插入和移除元素。名称 deque 是 “double ended queue(双端队列)”的缩写, 通常读为“deck”。大多数 Deque 实现对于它们能够包含的元素数没有固定限制,但此接口既支持有容量限制的双端队列, 也支持没有固定大小限制的双端队列。
此接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存在两种形式: 一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。 插入操作的后一种形式是专为使用有容量限制的 Deque 实现设计的;在大多数实现中,插入操作不能失败。
下表总结了差异
操作类型 | 第一个元素(头部) | 最后一个元素(尾部) |
---|---|---|
插入 | addFirst(e) ,offerFirst(e) | addLast(e) ,offerLast(e) |
移除 | removeFirst() ,pollFirst() | removeLast() ,pollLast() |
检查 | getFirst() ,peekFirst() | getLast() ,peekLast() |
都有两个方法,只是前者抛出异常,后者返回特殊值
除了这些插入,删除和检查 Deque 实例的基本方法外,Deque 接口还有一些更预定义的方法。
removeFirstOccurrence
从此双端队列移除第一次出现的指定元素。如果此双端队列不包含该元素,则不作更改。 更确切地讲,移除第一个满足 (o==null ? e==null : o.equals(e)) 的元素 e(如果存在这样的元素)。 如果此双端队列包含指定的元素(或者此双端队列由于调用而发生了更改),则返回 true。
removeLastOccurrence
从此双端队列移除最后一次出现的指定元素。如果此双端队列不包含该元素,则不作更改。 更确切地讲,移除最后一个满足 (o==null ? e==null : o.equals(e)) 的元素 e(如果存在这样的元素)。 如果此双端队列包含指定的元素(或者此双端队列由于调用而发生了更改),则返回 true。