一、Deque 子接口概述
1、Deque 接口继承自 Queue 接口,表示双端队列(Double-ended queue),同时具备 【队列】和【栈】的性质。
2、双端队列即意味着此队列可以在头尾都具有入队和出队的功能。
3、Deque 接口继承自 Queue 接口,可以将 Deque 理解为【双端队列】和【栈(Stack)】的组合。该栈是一个【链式栈】。
4、一般的队列是从尾部插入元素,头部移除元素;而双端队列则可以分别从两端插入元素、两端移除元素。
二、Deque 接口结构
1、Deque 接口声明
1 public interface Deque<E> extends Queue<E> {}
2、Deque 的继承结构及其常用子类
3、Deque 接口方法定义
Deque 作为双端队列,其定义的方法可以归纳如下:
First Element(Head) | Last Element(Tail) | |||
Throw exception | Special value | Throw exception | Special value | |
Insert | addFirst(e) | offerFirst(e) | addLast(e) | offerLast(e) |
Remove | removeFirst() | pollFirst() | removeLast() | pol |
由于 Deque 继承了 Queue 接口,因此 Queue 的方法在 Deque 中也有体现,而且与 Deque 定义的方法存在如下对应关系:
Queue Method | Equivalent Deque Method |
add(e) | addLast(e) |
offer(e) | offerLast(e) |
remove(e) | removeFirst() |
poll(e) | pollFirst() |
element() | getFirst() |
peek() | peekFirst() |
此外,Deque 还可以作为栈,有关栈的操作和在 Deque 中的对应方法如下:
Stack Method | Equivalent Deque Method |
push(e) | addFirst(e) |
pop() | removeFirst() |
peek() | peekFirst() |
Deque 还有几个独有的方法:
removeFirstOccurrence() 从该双端队列中移除第一次出现的指定元素;
removeLastOccurrence() 从该双端队列中移除最后一次出现的指定元素;
descendingIterator() 以相反顺序返回此双端队列中元素的迭代器,可以认为是 iterator() 反过来。