队列是一种特殊的线性表,它只允许在表的前端(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的区别相关推荐

  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. 【c++】27.事件驱动、IO复用、sellect、poll、epoll三者的区别

    一.事件驱动的理解: 1.要理解事件驱动和程序,就需要与非事件驱动的程序进行比较.实际上,现代的程序大多是事件驱动的,比如多线程的程序,肯定是事件驱动的.早期则存在许多非事件驱动的程序,这样的程序,在 ...

  5. (转)select、poll、epoll之间的区别

    本文来自:https://www.cnblogs.com/aspirant/p/9166944.html (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道 ...

  6. select、poll、epoll之间的区别

    select.poll.epoll之间的区别(搜狗面试) - aspirant - 博客园 (cnblogs.com)

  7. select、poll、epoll之间的区别(搜狗面试)

    (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对 ...

  8. IO多路复用中select、poll、epoll之间的区别

    本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...

  9. Map,List,Queue,Set和Stack的区别

    Map,List,Queue,Set和Stack的区别:

  10. jenkins定时部署Poll SCM 与Build periodically 区别

    Poll  SCM  与Build  periodically 区别: Poll  SCM是定时检查源码变更,如果有代码更新下来则执行构建动作,若没有代码更新,则不执行构建动作: Build  per ...

最新文章

  1. Linux System and Performance Monitoring(Memory篇)
  2. JQuery之ContextMenu(右键菜单)
  3. ASP.Net中无刷新执行Session身份验证
  4. mysql正在运行安全文件怎么办_MySQL服务器运行的安全文件化选项,所以它不能执行该语句什么情? 爱问知识人...
  5. android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...
  6. (回溯Uva524)素数环
  7. 飞鸽传书的这一新的通信方式采用云技术
  8. 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
  9. java转俯视图_Tweening / Animating threejs相机到顶视图
  10. 【Qt点滴】UDP协议实例:简易广播实现
  11. 一文看懂二叉搜索树~(又叫二叉查找树) 代码+详解(C/C++)
  12. 10.27大视野月赛翻车实况
  13. PDF如何转换成jpg图片
  14. HTML+CSS+JS生日祝福网页在线制作(多种款式)
  15. python+word+excel+ppt自动化办公教程_Python自动化办公之Word,全网最全看这一篇就够了...
  16. 前馈控制与反馈控制对比
  17. bootstarp怎么使盒子到最右边_疯狂搞机 | 联通IPTV盒子免拆安装第三方软件
  18. python运维系统模板,Python自动化运维之改造网页模板
  19. 三极管放大电路基本原理
  20. 数据结构(主席树,Bit):XTU 1247/COGS 2344. pair-pair

热门文章

  1. 2021数学建模C题题目
  2. sublime用cmd窗口调试python_如何使用xdebug和sublime调试python脚本
  3. 为Ubuntu安装build-essential软件包
  4. 硬件服务器采购指南,硬件组装_服务器采购指南_太平洋电脑网PConline
  5. python 怎么处理json_Python是怎样处理json模块的
  6. arcgis将点的属性赋值给面
  7. 【转】4.2使用jQuery.form插件,实现完美的表单异步提交
  8. rsyslog syslog详解
  9. 一步步编写操作系统80 扩展内联汇编1
  10. Qt undefined reference to,Error 255,找不到库函数的解决办法