往队列中添加元素有两个方法,分布是add和offer方法,两者的入参和返回值都一样,或许很多同学都奇怪,为什么,要有这两个功能类似(都是添加元素),但方法名不一样的方法,看看源码的注释

以下为Queue接口中方法定义:

```
public interface Queue<E> extends Collection<E> {/**  add方法,在不违背队列的容量限制的情况,往队列中添加一个元素, 如果添加成功则返回true,  如果因为容量* 限制添加失败了,则抛出IllegalStateException异常    * *  在有容量限制的队列中,最好使用offer方法*  另外,add方法相对与offer方法而言,有一个专门抛出的异常IllegalStateException,代表由于容量限制,* 导致不能添加元素的异常,接口中可能看不出,等看具体实现就明白了*/boolean add(E e);/***  offer方法在不违背容量限制的情况,往队列中添加一个元素,如果添加元素成功,返回true,*  如果因为空间限制,无法添加元素则,返回false;*  *  在有容量限制的队列中,这个offer方法优于add方法,结合上文中add的注释,可知,*  在容量限制的队列中, add方法通过抛异常的方式表示容量已满,offer方法通过返回*  false的方式表示容量已满,抛异常处理更加耗时,offer直接返回false的方式更好* */**boolean offer(E e);/**  删除队列头的元素,这个方法和poll方法的不同之处在于,这个方法在队列为* 空的时候选择抛异常* */E remove();/**  poll方法也是删除队列头的远,如果队列为空的化,返回null* */E poll();/**  返回队列头元素,这个方法和peek方法的区别在于,入股队列为空,将抛异常* */E element();/**  返回队列头元素,如果队列为空,将返回空* */E peek();
}

总结

1. queue的增加元素方法add和offer的区别在于,add方法在队列满的情况下将选择抛异常的方法来表示队列已经满了,而offer方法通过返回false表示队列已经满了;在有限队列的情况,使用offer方法优于add方法;
2. remove方法和poll方法都是删除队列的头元素,remove方法在队列为空的情况下将抛异常,而poll方法将返回null;
3. element和peek方法都是返回队列的头元素,但是不删除头元素,区别在与element方法在队列为空的情况下,将抛异常,而peek方法将返回null.

Queue接口分析:add和offer区别,remove和poll方法到底啥区别相关推荐

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

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

  2. Queue 中 add() 和 offer() 区别

    在 Queue 中 add() 和 offer() 有什么区别? Queue 中 add() 和 offer()都是用来向队列添加一个元素. 在容量已满的情况下,add() 方法会抛出IllegalS ...

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

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

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

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

  5. Java多线程学习二十四:阻塞队列包含哪些常用的方法?add、offer、put 等方法的区别?

    阻塞队列包含哪些常用的方法,以及 add,offer,put 等方法的区别. 在阻塞队列中有很多方法,而且它们都非常相似,所以非常有必要对这些类似的方法进行辨析,所以本课时会用分类的方式,和你一起,把 ...

  6. 【BlockingQueue】BlockingQueue接口方法说明和区别

    BlockingQueue在异步处理的时候经常用到它的存放和取出数据的操作,但是如存放也有add.offer等多个方法,这些方法有什么区别,这边用LinkedBlockingQueue作为实现测试一下 ...

  7. (详细全面)softmax和log_softmax的联系和区别,NLLLOSS和CrossEntropyLoss的联系和区别

    文章目录 1.softmax 2.log_softmax 3.softmax和log_softmax 4.NLLLOSS和CrossEntropyLoss 1.softmax 作用:实现了将n维向量变 ...

  8. java removeto_java.util.LinkedList.remove(int index)方法实例

    全屏 java.util.LinkedList.remove(int index)方法删除在此列表中的指定位置的元素. 声明 以下是java.util.LinkedList.remove()方法的声明 ...

  9. 深入理解select、poll和epoll及区别

    问题:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况. 那么有没有一种方式可以让一个进程 ...

最新文章

  1. iphone屏蔽系统更新_苹果iphone手机屏蔽烦人的系统更新弹窗提醒!
  2. 【Linux】一步一步学Linux——tty命令(240)
  3. oracle错误:1067进程意外终止
  4. vue之watch用法
  5. CSDN 首页的第一屏 广告/新闻 比率 = 40 : 2
  6. 自己动手写Docker系列 -- 6.3 手动配置容器网络(下)
  7. JAVA实现图的邻接表以及DFS
  8. 【Postgresql】pg掉电后无法重启
  9. 设计模式之创建型(1)-简单工厂
  10. CMS网站页面管理开发汇总
  11. C# 实现局域网的windows环境下的桌面分享
  12. HttpSession介绍
  13. 《大话数据结构(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数组+栈+链表+图+队列+树+堆+二叉树+哈希表+立钻哥哥+==)
  14. 未来教育计算机二级学生文档,未来教育计算机二级MS-office题库(解题步骤)题库.docx...
  15. matlab kdj代码,KDJ交易系统原理、用法及源代码(KDJ系统)
  16. 计算机组装实验老毛桃u盘报告,老毛桃winpe硬盘安装版制作教程
  17. SD卡和TF卡的区别/差异
  18. java获取生僻字_生僻字与16进制的转换
  19. python做excel自动化视频教程-从零基础入门到精通用Python处理Excel数据视频教程...
  20. 手机排行榜,手机党必看!

热门文章

  1. 《塞尔达传说》与氛围游戏的兴起:在游戏中感受禅意
  2. Python实现登录注册系统
  3. Auto CAD:图纸常用线宽、线型表之详细攻略
  4. OSChina 周三乱弹——最近你炒股了吗?
  5. 台式计算机无线接入,台式电脑可以无线连接wifi吗
  6. Android R- AudioManager之音量调节(一)
  7. 机器学习——EM算法
  8. c语言变量 集体备课,(最新整理)数学集体备课活动记录2
  9. DirectShow Filter的开发实践
  10. EDM数据营销之HTML模板相关问题