Deque
§ 初始化
直接初始化
/*作为队列使用*/
Deque<Integer> stk = new ArrayDeque<>();
/*作为栈使用*/
Deque<Integer> stk = new LinkList<>();
§ 常用API
添加
boolean add(E e) / boolean offer(E e)
:
向队尾添加元素,添加成功都返回true,二者区别在于对有容量限制的对象,在超过上限时:
add
会抛出异常offer
会返回false
void addFirst(E e) / boolean offerFirst(E e)
:
向队首添加元素,区别在于有无返回值
void addLast(E e) / boolean offerLast(E e)
:
向队尾添加元素,区别在于有无返回值
void push(E e)
:
向队首添加元素,等价于
addFirst
删除
E remove() / E poll()
:
删除队首元素,返回删除的元素,区别在于队列为空时:
remove
抛出异常poll
返回null
E removeFirst() / E poolFirst()
:
删除队首元素
E removeLast() / E pollLast()
:
删除队尾元素
E pop()
:
删除队首元素
获取
E element() / E peek()
:
返回队首元素,不删除,为空时
element
报错peek
返回null
E getFirst() / E peekFirst()
:
返回队首元素
E getLast() / E peekLast()
:
返回队尾元素
判断
int size()
:
返回长度
boolean isEmpty()
:
判断是否为空
boolean contains(Object o)
:
判断是否有指定元素
§ 用法
Deque可以用作链表、队列、栈等结构
- 作为链表,实现类使用**
LinkList
,添加和删除推荐使用add
,remove
**- 作为队列,实现类使用**
ArrayDeque
,添加和删除推荐使用offer
,poll
**- 作为双端队列,实现类使用**
LinkList
,添加和删除推荐使用addFirst/offerFirst/addLast/offerLast
,removeFirst/pollFirst/removeLast/pollLast
**- 作为栈使用,实现类使用**
LinkList
,添加和删除推荐使用push
,pop
**