28-Deque
2020-02-04 本文已影响0人
鹏程1995
类介绍
类定位
Deque
这个类的全称为Double End Queue,即这个队列可以双向出入队。这个类并不是多线程安全的。
类继承关系分析
Deque
也是Queue
的一个子类。直接上idea截图。
所以,在接下来的介绍中,我们主要介绍Deque
中在Queue
上扩展的新的方法,对烂大街的方法不再介绍。
类使用场景
双向队列:
- 用来存储数据,这也算是一项基本的数据结构了吧(但是貌似没怎么用过)
- 用来模仿
Stack
(但是已经有了Stack
,你还要上天吗)
所以,貌似没什么非用不可的场景,平时集合类一般用List
,Map
就够了。。。。。。
类注意事项
没啥,老一套。
这个类不限制空值,但是却提供了返回特殊值的操作方法。所以个人建议还是限制一下,不要存空值了。
源码介绍
方法归类
队的基本操作,两类:
- 有问题抛异常
- 有问题返回特殊值
这里只是分为了头尾的操作。
头尾方法总结
头部操作
操作 | 抛异常 | 返回特殊值 | 新方法 | 老方法 |
---|---|---|---|---|
进队列 | addFirst(e) | offerFirst(e) | push(e) | |
出队列 | removeFirst() | pollFirst() | pop() | remove(),poll() |
取队头 | getFirst() | peekFirst() | element(),peek() | |
尾部操作
操作 | 抛异常 | 返回特殊值 | 新方法 | 老方法 |
---|---|---|---|---|
进队列 | addLast(e) | offerLast(e) | add(E e),offer(E e) | |
出队列 | removeLast() | pollLast() | ||
取队尾 | getLast() | peekLast() |
其他方法总结
boolean removeFirstOccurrence(Object o);
删除掉第一次出现的
boolean removeLastOccurrence(Object o);
删除掉最后一次出现的
Iterator<E> iterator();
用一个Iterator
返回集合
Iterator<E> descendingIterator();
用一个Iterator
返回集合,逆序