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来用。
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 ...
- 【c++】27.事件驱动、IO复用、sellect、poll、epoll三者的区别
一.事件驱动的理解: 1.要理解事件驱动和程序,就需要与非事件驱动的程序进行比较.实际上,现代的程序大多是事件驱动的,比如多线程的程序,肯定是事件驱动的.早期则存在许多非事件驱动的程序,这样的程序,在 ...
- (转)select、poll、epoll之间的区别
本文来自:https://www.cnblogs.com/aspirant/p/9166944.html (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道 ...
- select、poll、epoll之间的区别
select.poll.epoll之间的区别(搜狗面试) - aspirant - 博客园 (cnblogs.com)
- select、poll、epoll之间的区别(搜狗面试)
(1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对 ...
- IO多路复用中select、poll、epoll之间的区别
本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...
- Map,List,Queue,Set和Stack的区别
Map,List,Queue,Set和Stack的区别:
- jenkins定时部署Poll SCM 与Build periodically 区别
Poll SCM 与Build periodically 区别: Poll SCM是定时检查源码变更,如果有代码更新下来则执行构建动作,若没有代码更新,则不执行构建动作: Build per ...
最新文章
- Linux System and Performance Monitoring(Memory篇)
- JQuery之ContextMenu(右键菜单)
- ASP.Net中无刷新执行Session身份验证
- mysql正在运行安全文件怎么办_MySQL服务器运行的安全文件化选项,所以它不能执行该语句什么情? 爱问知识人...
- android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...
- (回溯Uva524)素数环
- 飞鸽传书的这一新的通信方式采用云技术
- 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
- java转俯视图_Tweening / Animating threejs相机到顶视图
- 【Qt点滴】UDP协议实例:简易广播实现
- 一文看懂二叉搜索树~(又叫二叉查找树) 代码+详解(C/C++)
- 10.27大视野月赛翻车实况
- PDF如何转换成jpg图片
- HTML+CSS+JS生日祝福网页在线制作(多种款式)
- python+word+excel+ppt自动化办公教程_Python自动化办公之Word,全网最全看这一篇就够了...
- 前馈控制与反馈控制对比
- bootstarp怎么使盒子到最右边_疯狂搞机 | 联通IPTV盒子免拆安装第三方软件
- python运维系统模板,Python自动化运维之改造网页模板
- 三极管放大电路基本原理
- 数据结构(主席树,Bit):XTU 1247/COGS 2344. pair-pair
热门文章
- 2021数学建模C题题目
- sublime用cmd窗口调试python_如何使用xdebug和sublime调试python脚本
- 为Ubuntu安装build-essential软件包
- 硬件服务器采购指南,硬件组装_服务器采购指南_太平洋电脑网PConline
- python 怎么处理json_Python是怎样处理json模块的
- arcgis将点的属性赋值给面
- 【转】4.2使用jQuery.form插件,实现完美的表单异步提交
- rsyslog syslog详解
- 一步步编写操作系统80 扩展内联汇编1
- Qt undefined reference to,Error 255,找不到库函数的解决办法