队列是一种特殊的线性表,它只允许在表的前端(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. 数据结构Queue:poll、offer、element、peek

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

  2. Queue:poll、offer、element、peek的区别

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

  3. 深信服C++ 三面(技术面、30min、offer)

    深信服C++ 三面(技术面.30min.offer) 一.面试官问 你是从哪里过来的呢? 你们校区是和新都校区一样统招的吗 自我介绍 你挑两个你觉得写的最好的项目来说一说吧 讲解两个项目,balaba ...

  4. 三维GIS/GIS开发学习路线、软件和数据、视频资源推荐

    GIS开发学习资源合集来了!!一份前所未有,全网都没有这么详细的资源合集来了,从基础入门视频.实战项目.GIS开发数据合集.开发软件等,囊括了GIS开发学习所以内容. 一.GIS和WebGIS简介: ...

  5. 【面试专栏】第三篇:Java基础:集合篇-List、Queue

    面试中问完基础基本上就是考集合,因为集合的使用在业务开发中经常使用,而且集合的数据结构也是算法的基础,所以你对集合的掌握深度可能决定你有没有接着面的资格 List & Queue 实现类 Li ...

  6. java基础:13.2 集合框架 - LinkedList、Queue

    文章目录 1.Deque 2.Queue 3.ArrayList 和 LinkedList 的区别 4.练习 与ArrayList一样,LinkedList也实现了List接口,诸如add,remov ...

  7. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)

    一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 1 简单的启动线程语法 2 def run(na ...

  8. main线程 子线程 顺序_面试官:线程池如何按照core、max、queue的执行顺序去执行?详解...

    前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...

  9. adguard没有核心 core no_面试官:线程池如何按照core、max、queue的执行顺序去执行?...

    前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...

最新文章

  1. 安卓重要组件#1--ListView创建及基本的使用方法
  2. 如何挂载initrd.img文件(简单三步)
  3. linux批量为文件名添加前缀脚本示例
  4. debian9.8与主机共享问题
  5. 1584 - Circular Sequence
  6. 在制作html页面时,在制作Xhtml页面时是先写HTML代码还是先写CSS代码
  7. sql添加字段并设置外键
  8. SC-02-04-外包软件开发SOW工作说明书
  9. 学习笔记:定积分的求解(矩形法)
  10. illumina测序两束激发光分别是什么颜色,A/T/C/G四个碱基又分别标记了什么颜色的荧光素呢?
  11. VMware14虚拟机安装苹果系统
  12. 云服务器1:云服务器能干什么
  13. 输出的字符串中有空格并且无法替换B e a r e r N D c y Z T g 4 N z A t N 2 N h Z C 0 0 Y 2 E 4 L T g x M W E t O D Y
  14. Matlab中测程序运行时间
  15. 为什么淘宝京东的首页这么快
  16. 大数据技术原理——期末复习storm
  17. C/C++/Java/Go/Rust,Python喊你来打擂:3秒钟内统计出小于1亿的素数个数
  18. 云计算机的主要服务形式有哪些,云计算主要服务形式是什么?
  19. 深富策略:新股申购规则有那些?
  20. 【C语言】大小端字节序判断 常见笔试题型

热门文章

  1. 必须正确理解的---ng指令中的compile与link函数解析
  2. Python中获取字典中最值对应的键
  3. SQL Server数据库大型应用解决方案总结(转载)
  4. linux环境下创建MyOS虚拟机
  5. 使用ffmpeg对视频进行TS切片
  6. Windows下查找文件或文件夹被哪个进程占用
  7. PCL点云库用Poisson网格化实现点云的表面重建
  8. linux环境变量显示、添加、删除
  9. Ice笔记--C++线程与并发(小结)
  10. itchat爬取朋友圈签名制作词云