Deque发音经常读作Deck, Deque就是一个双向队列。双向队列是一种线性的数据结构,它支持在两端添加或者删除元素。 双向队列是比较栈和队列更丰富的抽象类型,因为它兼有栈和队列的特性。它支持方法有添加、删除和监控元素。预定义的类像ArrayDeque
和LinkedList
都实现了双向队列的接口。
注意Deque接口既可以用作先进后出的栈,也可以用作先进先出的队列。Deque接口里的方法分为下面三大类:
插入
addfirst
和offerFirst
在队头插入元素,addLast
和offerLast
在队尾插入元素。 如果队列的大小是限定的, 推荐优先使用offerFirst
和offerLast
, 因为addfirst
和addLast
会在队列满的时候抛出异常。
删除
removeFirst
和pollFirst
从队头移除元素,removeLast
和pollLast
从队尾移除元素。如果队列是空,pollFirst
和pollLast
会返回空, 但是removeFirst
和removeLast
会抛出异常。
获取
getFirst
和 peekFirst
方法获取队列的第一个元素。这些方法不会移除队列中的元素。相应的getLast
和peekLast
获取队列中最后一个元素。当队列是空的时候, peekFirst
和peekLast
返回空,但是getFirst
和 getLast
会抛出异常。
下面是这12种方法的详细列表:
操作类型 | 第一个元素(队头) | 最后一个元素(队尾) |
---|---|---|
插入 | addFirst(e),offerFirst(e) | addLast(e),offerLast(e) |
删除 | removeFirst(),pollFirst() | removeLast(),pollLast() |
获取 | getFirst(),peekFirst() | getLast(),peekLast() |
除了这些基本的插入、删除和监测方法, Deque还有自己的方法。其中一个就是removeFirstOccurence
,这个方法会移除队列第一次出现的指定元素,如果队列中没有出现,队列不会受到任何影响。另外一个相似的方法就是removeLastOccurence
,移除队列中最后出现的指定元素。这些方法都返回一个布尔类型,如果返回true证明移除成功。
http://docs.oracle.com/javase/tutorial/collections/interfaces/deque.html