Java 双端队列接口 Deque
2024-08-26 07:02:33
Deque 是一种支持在两端进行操作的线性结构,包含了栈和队列的功能。Java 中建议使用 Dqueue 的实现来替代遗留的 Stack 类。本文将介绍 Deque 提供的主要 API。
双端操作 API
Deque 的核心 API 可以按照操作头部和尾部分为两类,并可以进一步按照抛出异常和返回特殊值进行进一步划分。
头部操作 | 尾部操作 | |||
抛出异常 | 返回特殊值 | 抛出异常 | 返回特殊值 | |
插入 | addFirst(e) |
offerFirst(e) |
addLast(e) |
offerLast(e) |
删除 | removeFirst() |
pollFirst() |
removeLast() |
pollLast() |
获取 | getFirst() |
peekFirst() |
getLast() |
peekLast() |
需要注意的是,某些 Deque 的实现(如 ArrayDeque)在调用 offerFirst(e), offerLast(e) 时,若传入的 e 为 null,仍然会抛出 NullPointerEaception,而另一些实现则不会(如 LinkedList)。
descendingIterator()
返回一个迭代器,迭代器从尾部往头部方向返回元素。
removeFirstOccurrence(Object o) / removeLastOccurrence(Object o)
移除首次/最后出现的元素 o,Deque 中可以放入重复元素,首次出现的意思是距离头部最近的与 o 相等的元素,同理,最后出现的意思是距离尾部最近的与 o 相等的元素。
队列
Deque 继承了 Queue 接口,因此也提供了队列相关操作的东西。进行队列的操作本质是双端队列的 API 换了个名字,只需要将名字对应起来即可。
Queue 方法 | 对应的 Deque 方法 |
---|---|
add(e) |
addLast(e) |
offer(e) |
offerLast(e) |
remove() |
removeFirst() |
poll() |
pollFirst() |
element() |
getFirst() |
peek() |
peekFirst() |
栈
与队列类似,栈的 API 也时部分双端队列 API 换了了名字。
Stack 方法 | 对应的 Deque 方法 |
---|---|
push(e) |
addFirst(e) |
pop() |
removeFirst() |
peek() |
peekFirst() |
Deque 的实现
Deque 是线性结构,实现方式分类两类,一类基于数组,典型代表是 ArrayDeque;另一类基于链表,典型代表是 LinkedList。这两个典型代表的详细介绍参考下面两篇博客:
ArrayDeque API 与算法分析
LinkedList 分析
最新文章
- jquery插件开发
- Effective C++第三遍
- 关于RunLoop
- Python登录页面及
- java并发编程(Exchanger)
- AJAX跨域的常见方法
- asp.net mvc 动态编译生成Controller
- 制作代码模板的 LaTex 模板
- [项目推荐] Corcel 让你在 WordPress 中使用 Laravel
- jstack 使用一例
- 简单的redis 的list应用
- ascii码值
- c#之正则表达式
- mysql垂直分区和水平分区
- docker 非root用户修改mount到容器的文件出现“Operation not permitted
- poj 1511 Invitation Cards(最短路中等题)
- canvas版《俄罗斯方块》
- Linux下tomcat无法启动
- WINRAR 自解压脚本命令及变量
- [Elixir003] Mix Archives