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
