什么是Deque
Deque(Double Ended Queue)是一个双向队列,允许两头进出,即:
- 既可以添加到队尾,也可以添加到队首,
- 既可以从队首获取,又可以从队尾获取。
Deque继承了Queue
Deque方法
//插入头部,异常会报错
void addFirst(E e);
//插入尾部,异常会报错
void addLast(E e);
//插入头部,异常返回false
boolean offerFirst(E e);
//插入尾部,异常返回false
boolean offerLast(E e);
//移除并获取头部第一个元素 异常抛出NoSuchElementException
E removeFirst();
//移除并获取尾部第一个元素 异常抛出NoSuchElementException
E removeLast();
//移除并获取头部第一个元素 deque为空返回null
E pollFirst();
//移除并获取尾部第一个元素 deque为空返回null
E pollLast();
//获取头部第一个元素,异常抛出NoSuchElementException
E getFirst();
//获取尾部第一个元素,异常抛出NoSuchElementException
E getLast();
//获取头部第一个元素,异常返回null
E peekFirst();
//获取尾部第一个元素,异常返回null
E peekLast();
//移除首先出现的指定的元素,如果队列中不存在则不影响。
boolean removeFirstOccurrence(Object o);
//移除最后出现的指定的元素(即倒序找),如果队列中不存在则不影响。
boolean removeLastOccurrence(Object o);
// *** Queue的方法 ***
boolean add(E e);
boolean offer(E e);
E remove();
E poll();
E element();
E peek();
// *** 堆栈方法 ***
//头部添加一个元素,如果队列长度不够则抛出 IllegalStateException
void push(E e);
//移除并返回头部第一个元素,异常抛出NoSuchElementException
E pop();
// *** 集合方法 ***
boolean remove(Object o);
boolean contains(Object o);
public int size();
//迭代器 头->尾
Iterator<E> iterator();
//倒叙迭代器 尾->头
Iterator<E> descendingIterator();