队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。

在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。

Queue继承了Collection接口

Queue使用时要尽量避免Collection的add()和remove()方法,add()和remove()方法在失败的时候会抛出异常。

要使用offer()来加入元素,使用poll()来获取并移出元素。

它们的优点是通过返回值可以判断成功与否, 如果要使用前端而不移出该元素,使用element()或者peek()方法。

值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

Queue<TreeNode> q = new LinkedList<>();

  add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常
  remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
  element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常
  offer       添加一个元素并返回true       如果队列已满,则返回false
  poll         移除并返问队列头部的元素    如果队列为空,则返回null
  peek       返回队列头部的元素             如果队列为空,则返回null
  put         添加一个元素                      如果队列满,则阻塞
  take        移除并返回队列头部的元素     如果队列为空,则阻塞

数据结构Queue:poll、offer、element、peek相关推荐

  1. java Queue中 add/offer,element/peek,remove/poll区别

    java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下: 1.add()和offer()区别 ...

  2. Java知识点06:队列(Queue)的offer/add函数,poll/remove函数,peek/element函数的区别

    一.Queue接口的描述 Queue接口,实现了 Collection接口. 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. 在Queue中,有 offer.add ...

  3. queue方法中add,offer,remove,poll,element,peek的用法和区别

    queue方法中add,offer,remove,poll,element,peek的用法和区别 1.add()和offer()两者都是往队列尾部插入元素. 不同是,当超出队列界限(容量)的时候,ad ...

  4. Queue接口中add()与offer(),remove()与poll(),element()与peek()方法区别

    1.add()与offer():都是在队列尾部增加元素,区别在于队列满时,add方法会抛出队列已满异常,offer方法返回false表示队列已满. 2.remove()与poll():都是删除队列的头 ...

  5. queue 的 offer,poll,peek 方法

    offer() 是往队列中添加一个元素,若队列已满而仍往队列中添加,则会返回false poll() 是删除队列中的第一个元素,在对空队列进行操作时,返回null peek() 是输出队列的第一个元素 ...

  6. linkin大话数据结构--Queue

    链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).由于不必按顺序存储,所以插入和删除速度超 ...

  7. C#:数据结构queue队列源码:循环使用数组头标,尾标,防止不停扩容数组

    https://referencesource.microsoft.com/#mscorlib/system/collections/queue.cs 概述 初始化:默认32个,每次2倍扩.所以在初始 ...

  8. 力扣-图解算法数据结构-剑指 Offer 05. 替换空格

    题目要求 力扣题解 代码 /*** @program: mydemo* @description: 剑指 Offer 05. 替换空格* @author: Mr.zeng* @create: 2021 ...

  9. 干货 | 45张图庖丁解牛18种Queue,你知道几种?

    来源 | 悟空聊架构(ID:PassJava666) 在讲<21张图讲解集合的线程不安全>那一篇,我留了一个彩蛋,就是Queue(队列)还没有讲,这次我们重点来看看Java中的Queue家 ...

最新文章

  1. 2021年大数据Flink(三十六):​​​​​​​Table与SQL ​​​​​​案例三
  2. VTK:可视化之CreateColorSeries
  3. docker+kibana+filebeat的安装
  4. [html] 如果让你实现一个网页版的办公表格(类似excel),你觉得是否可行?如果可行应该怎么做?
  5. LeetCode 1337. 方阵中战斗力最弱的 K 行(优先队列)
  6. 31省份开学时间一览表
  7. 轻松搞定个人虚拟桌面部署之4-配置远程访问
  8. python如何并发运行2个软件_如何利用并发性加速你的python程序(二):I/O 绑定程序加速...
  9. python的使用_python的使用
  10. GDC2017分享:移动VR开发者的赚钱之道
  11. Docker学习总结(42)——Docker Compose 入门学习
  12. Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
  13. android 模拟器 403,Android403R2模拟器安装.doc
  14. 国家代码查询(Country codes)
  15. 鹏保宝 v7.1.0 官方版
  16. 同一个jar包不同版本冲突解决方法
  17. 阮一峰:值得分享给开发者的 Authing 身份云
  18. java poi 追加_使用POI 向Excel中追加数据
  19. 让割草类游戏更有趣的攻击动作设计技巧
  20. Android studio 导出安卓APP软件方法

热门文章

  1. 三角测距激光重建算子HALCON
  2. 发动机异响故障诊断与排除_发动机缺缸故障诊断以及排除方法
  3. LOJ#2302 整数
  4. 发布servlet版 Ajax 验证码验证组件
  5. 8 关于数据仓库维度数据处理的方法探究系列——父子维
  6. 防火墙 之 iptables 匹配条件讲解
  7. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
  8. maven配置默认jdk版本
  9. Android: how to resolve Application’s parameter NullPointerException
  10. 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面...