Deque 是一种支持在两端进行操作的线性结构,包含了栈和队列的功能。Java 中建议使用 Dqueue 的实现来替代遗留的 Stack 类。本文将介绍 Deque 提供的主要 API。

双端操作 API

Deque 的核心 API 可以按照操作头部和尾部分为两类,并可以进一步按照抛出异常和返回特殊值进行进一步划分。

Deque 方法汇总
头部操作 尾部操作
抛出异常 返回特殊值 抛出异常 返回特殊值
插入 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 分析

最新文章

  1. jquery插件开发
  2. Effective C++第三遍
  3. 关于RunLoop
  4. Python登录页面及
  5. java并发编程(Exchanger)
  6. AJAX跨域的常见方法
  7. asp.net mvc 动态编译生成Controller
  8. 制作代码模板的 LaTex 模板
  9. [项目推荐] Corcel 让你在 WordPress 中使用 Laravel
  10. jstack 使用一例
  11. 简单的redis 的list应用
  12. ascii码值
  13. c#之正则表达式
  14. mysql垂直分区和水平分区
  15. docker 非root用户修改mount到容器的文件出现“Operation not permitted
  16. poj 1511 Invitation Cards(最短路中等题)
  17. canvas版《俄罗斯方块》
  18. Linux下tomcat无法启动
  19. WINRAR 自解压脚本命令及变量
  20. [Elixir003] Mix Archives

热门文章

  1. Day6【Scrum 冲刺博客】
  2. 数组的翻转(非reverse)
  3. 图论补档——KM算法+稳定婚姻问题
  4. Eureka系列(六) TimedSupervisorTask类解析
  5. 仵航说 SpringBoot项目配置Log日志服务-仵老大
  6. CSRF学习
  7. SpringBoot进阶教程(六十七)RateLimiter限流
  8. 在库中使用schematics——ng add与ng update
  9. 最新 obs-studio vs2019 开发环境搭建 代码编译
  10. 关于新创公司所需的icp,网文,软著和备案的申请