Queue

PriorityQueue:Object[]数组来实现二叉堆
ArrayQueue:Object[]数组+双指针

Queue和Deque的区别

Queue是单端队列,只能从一端插入元素,另一端删除元素,实现了一般遵循先进先出(FIFO)规则。
Queue扩展了Collection的接口,根据因为容量问题导致操作失败后处理方式的不同可以分为两类方法:一种在操作失败后会抛出异常,另一种则会返回特殊值。

Queue接口 抛出异常 返回特殊值
插入队尾 add(E e) offer(E e)
删除队首 remove() poll()
查询队首元素 element() peek()

Deque是双端队列,在队列的两端均可以插入或删除元素。
Deque 扩展了 Queue 的接口, 增加了在队首和队尾进行插入和删除的方法,同样根据失败后处理方式的不同分为两类:

Deque 接口 抛出异常 返回特殊值
插入队首 addFirst(E e) offerFirst(E e)
插入队尾 addLast(E e) offerLast(E e)
删除队首 removeFirst() pollFirst()
删除队尾 removeLast() pollLast()
查询队首元素 getFirst() peekFirst()
查询队尾元素 getLast() peekLast()

Deque 还提供有 push() 和 pop() 等其他方法,可用于模拟栈。

ArrayDeque和LinkedList的区别

ArrayDeque和LinkedList都实现了Deque接口,两者都均有队列的功能

ArrayDeque LinkedList
基于可变长的数组和双指针实现 通过链表实现
不支持存储NULL数据 支持存储NULL数据
1.6引入 1.2引入
插入时可能存在扩容过程,均摊后的插入操作依然是O(1) 不需要扩容,但是每次插入数据时需要申请新的堆空间,均摊性能相比更慢
性能更好
可用于实现栈

Queue和Deque相关推荐

  1. Java集合List,Set,Map,Queue,Deque

    集合是Java基础中非常重要的一部分,Java提供了非常丰富的集合API,了解各个集合的特点,怎么样在各种各样的场景中使用正确的集合,非常重要,也是一个Java程序员最基本的素养. 整体了解 Java ...

  2. 浅析 Queue 和 Deque

    终于开始了 LeetCode 的练习,看到 102. 二叉树的层序遍历 有种解法利用到了队列,想着挨个看看基础队列中的方法,便有了这篇文章. 基于 Java 对 Queue 以及 Deque(doub ...

  3. queue和deque的区别

    queue和deque的区别 queue deque queue 单端队列 queue从队首弹出,先入先出 queue只能从队首删除元素, 但是两端都能访问. queue<int> q; ...

  4. List、Set、Map、Queue、Deque、Stack的遍历方式总结

    一.List集合遍历 (有序.可重复) (1)iterator迭代器遍历(推荐) 原因:iterator对象遍历不同的List类型,返回的iterator对象实现不同,访问效率较高 List<S ...

  5. 源码阅读(34):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(4)

    (接上文<源码阅读(33):Java中线程安全的Queue.Deque结构--ArrayBlockingQueue(3)>) 2.3.3.3.forEachRemaining() 方法 f ...

  6. 源码阅读(32):Java中线程安全的Queue、Deque结构——ArrayBlockingQueue(2)

    (接上文<源码阅读(31):Java中线程安全的Queue.Deque结构--ArrayBlockingQueue(1)>) 本篇内容我们专门分析ArrayBlockingQueue中迭代 ...

  7. Java中集合遍历方式(List、Set、Queue、Deque、Stack、Map)

    什么是集合?通俗的讲,集合就是存储一组数据的容器,那么,相比较于同样是存储数据的数组,集合的优势就体现在集合的长度是可变的,而数组的长度是固定的.在我们常见的集合中,主要有两大类: Collectio ...

  8. Queue与Deque的区别

    前言 ​ 在研究java集合源码的时候,发现了一个很少用但是很有趣的点:Queue以及Deque,平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知 ...

  9. 5.Queue和Deque的区别与联系

    java的Deque与Queue 1.Queue接口(单向队列) Queue接口,是集合框架Collection的子接口,是一种常见的数据结构,遵循先进先出的原则. 是基于链表来进行实现,的单向队列. ...

最新文章

  1. python学习之pip常用命令
  2. Phpstorm数组对齐设置
  3. Windows Server 2008 R2 之二十一远程桌面服务RD之二
  4. 带有Java和Axis2的JSON Web服务
  5. Delta-Sigma调制(DSM)技术
  6. C++语法:vector的使用
  7. 第六章至第九章的单元测试
  8. Taro+react开发(35) 实现拖动
  9. 开始使用Python编程
  10. PytorchRuntimeError: inconsistent tensor sizes at /pytorch/torch/lib/TH/generic/THTensorMath.c:2709
  11. 【C/C++】一篇文章教你区分数组指针指针数组
  12. 传奇脚本称号(封号)设置的详解
  13. 关于浏览器方向的大厂面试题
  14. Python构造虚数矩阵报警告ComplexWarning: Casting complex values to real discards the imaginary part
  15. web工程的权限管理
  16. word图文混排复制到JMEditor图片不显示
  17. html5如何设置视频为静音,html5中设置或返回音频/视频是否应该被静音的属性muted-...
  18. 线性代数学习笔记——第七讲——分块矩阵(干货满满的感觉)
  19. TS2532: Object is possibly ‘undefined‘
  20. Grid Tagging Scheme for Aspect-oriented Fine-grained Opinion Extraction 论文阅读

热门文章

  1. 【科创人南京行】西祠胡同创始人“响马”刘琥:一生寻找精神绿林,减区块链也许是正确方向...
  2. 基于MATLABCPLEX 的机组最优组合,成功求解表格化,图示化的机组组合结果(学习参考)
  3. 线程状态是五种对?还是六种对?
  4. matlab中a2=poly(p2),插值与拟合matlab实现
  5. 爬虫(04)cookie+session+正则+字典快速生成2020-12-18
  6. WebStorm 2016 最新安装指南 破解 汉化 字体设置
  7. BETWEEN AND 操作符
  8. ideaIU_13.1.3安装图解。
  9. C++ strcpy的用法
  10. idea中开启多个线程运行多个项目