数据结构Queue:poll、offer、element、peek
队列是一种特殊的线性表,它只允许在表的前端(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相关推荐
- java Queue中 add/offer,element/peek,remove/poll区别
java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下: 1.add()和offer()区别 ...
- Java知识点06:队列(Queue)的offer/add函数,poll/remove函数,peek/element函数的区别
一.Queue接口的描述 Queue接口,实现了 Collection接口. 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. 在Queue中,有 offer.add ...
- queue方法中add,offer,remove,poll,element,peek的用法和区别
queue方法中add,offer,remove,poll,element,peek的用法和区别 1.add()和offer()两者都是往队列尾部插入元素. 不同是,当超出队列界限(容量)的时候,ad ...
- Queue接口中add()与offer(),remove()与poll(),element()与peek()方法区别
1.add()与offer():都是在队列尾部增加元素,区别在于队列满时,add方法会抛出队列已满异常,offer方法返回false表示队列已满. 2.remove()与poll():都是删除队列的头 ...
- queue 的 offer,poll,peek 方法
offer() 是往队列中添加一个元素,若队列已满而仍往队列中添加,则会返回false poll() 是删除队列中的第一个元素,在对空队列进行操作时,返回null peek() 是输出队列的第一个元素 ...
- linkin大话数据结构--Queue
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).由于不必按顺序存储,所以插入和删除速度超 ...
- C#:数据结构queue队列源码:循环使用数组头标,尾标,防止不停扩容数组
https://referencesource.microsoft.com/#mscorlib/system/collections/queue.cs 概述 初始化:默认32个,每次2倍扩.所以在初始 ...
- 力扣-图解算法数据结构-剑指 Offer 05. 替换空格
题目要求 力扣题解 代码 /*** @program: mydemo* @description: 剑指 Offer 05. 替换空格* @author: Mr.zeng* @create: 2021 ...
- 干货 | 45张图庖丁解牛18种Queue,你知道几种?
来源 | 悟空聊架构(ID:PassJava666) 在讲<21张图讲解集合的线程不安全>那一篇,我留了一个彩蛋,就是Queue(队列)还没有讲,这次我们重点来看看Java中的Queue家 ...
最新文章
- 2021年大数据Flink(三十六):​​​​​​​Table与SQL ​​​​​​案例三
- VTK:可视化之CreateColorSeries
- docker+kibana+filebeat的安装
- [html] 如果让你实现一个网页版的办公表格(类似excel),你觉得是否可行?如果可行应该怎么做?
- LeetCode 1337. 方阵中战斗力最弱的 K 行(优先队列)
- 31省份开学时间一览表
- 轻松搞定个人虚拟桌面部署之4-配置远程访问
- python如何并发运行2个软件_如何利用并发性加速你的python程序(二):I/O 绑定程序加速...
- python的使用_python的使用
- GDC2017分享:移动VR开发者的赚钱之道
- Docker学习总结(42)——Docker Compose 入门学习
- Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
- android 模拟器 403,Android403R2模拟器安装.doc
- 国家代码查询(Country codes)
- 鹏保宝 v7.1.0 官方版
- 同一个jar包不同版本冲突解决方法
- 阮一峰:值得分享给开发者的 Authing 身份云
- java poi 追加_使用POI 向Excel中追加数据
- 让割草类游戏更有趣的攻击动作设计技巧
- Android studio 导出安卓APP软件方法
热门文章
- 三角测距激光重建算子HALCON
- 发动机异响故障诊断与排除_发动机缺缸故障诊断以及排除方法
- LOJ#2302 整数
- 发布servlet版 Ajax 验证码验证组件
- 8 关于数据仓库维度数据处理的方法探究系列——父子维
- 防火墙 之 iptables 匹配条件讲解
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
- maven配置默认jdk版本
- Android: how to resolve Application’s parameter NullPointerException
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面...