Deque简介
双端队列(double-ended queue)是一种具有队列和栈的性质的数据结构。
API:
interface Deque<E> extends Queue<E>
接口的实现类 实现了这个接口的类有两个,分别是 ArrayDeque,LinkedList
他们底层存储方式不同
| ArrayDeque | LinkedList | |
|---|---|---|
| 存储方式 | 长度为16的数组 | 链表 |
使用场景
ArrayDeque:频繁的随机访问操作。
LinkedList:频繁的插入,删除操作以及未知的初始数据量。
双端队列的常用方法
- addFirst(E):void 在队头添加元素。
- addLast(E):void 在队尾添加元素。
- offerFirst(E):boolean 在队头添加元素,并返回是否添加成功。
- offerLast(E):boolean 在队尾添加元素,并返回是否添加成功。
- removeFirst():E 删除队头元素,并返回删除的元素,如果队列为null,抛出异常。
- removeLast():E 删除队尾元素,并返回删除的元素,如果队列为null,抛出异常。
- pollFirst():E 删除队头元素,并返回删除的元素,如果队列为null,返回null。
- pollLast():E 删除队尾元素,并返回删除的元素,如果队列为null,返回null。
- getFirst():E 获取队头元素,如果队列为null,抛出异常。
- getLast():E 获取队尾元素,如果队列为空,抛出异常。
- peekFirst():E 获取队头元素,如果队列为null,返回null。
- peeLast():E 获取队尾元素,如果队列为null,返回null。