Queue接口分析:add和offer区别,remove和poll方法到底啥区别
往队列中添加元素有两个方法,分布是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方法到底啥区别相关推荐
- Queue接口中add()与offer(),remove()与poll(),element()与peek()方法区别
1.add()与offer():都是在队列尾部增加元素,区别在于队列满时,add方法会抛出队列已满异常,offer方法返回false表示队列已满. 2.remove()与poll():都是删除队列的头 ...
- Queue 中 add() 和 offer() 区别
在 Queue 中 add() 和 offer() 有什么区别? Queue 中 add() 和 offer()都是用来向队列添加一个元素. 在容量已满的情况下,add() 方法会抛出IllegalS ...
- Java知识点06:队列(Queue)的offer/add函数,poll/remove函数,peek/element函数的区别
一.Queue接口的描述 Queue接口,实现了 Collection接口. 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. 在Queue中,有 offer.add ...
- java Queue中 add/offer,element/peek,remove/poll区别
java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下: 1.add()和offer()区别 ...
- Java多线程学习二十四:阻塞队列包含哪些常用的方法?add、offer、put 等方法的区别?
阻塞队列包含哪些常用的方法,以及 add,offer,put 等方法的区别. 在阻塞队列中有很多方法,而且它们都非常相似,所以非常有必要对这些类似的方法进行辨析,所以本课时会用分类的方式,和你一起,把 ...
- 【BlockingQueue】BlockingQueue接口方法说明和区别
BlockingQueue在异步处理的时候经常用到它的存放和取出数据的操作,但是如存放也有add.offer等多个方法,这些方法有什么区别,这边用LinkedBlockingQueue作为实现测试一下 ...
- (详细全面)softmax和log_softmax的联系和区别,NLLLOSS和CrossEntropyLoss的联系和区别
文章目录 1.softmax 2.log_softmax 3.softmax和log_softmax 4.NLLLOSS和CrossEntropyLoss 1.softmax 作用:实现了将n维向量变 ...
- java removeto_java.util.LinkedList.remove(int index)方法实例
全屏 java.util.LinkedList.remove(int index)方法删除在此列表中的指定位置的元素. 声明 以下是java.util.LinkedList.remove()方法的声明 ...
- 深入理解select、poll和epoll及区别
问题:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况. 那么有没有一种方式可以让一个进程 ...
最新文章
- iphone屏蔽系统更新_苹果iphone手机屏蔽烦人的系统更新弹窗提醒!
- 【Linux】一步一步学Linux——tty命令(240)
- oracle错误:1067进程意外终止
- vue之watch用法
- CSDN 首页的第一屏 广告/新闻 比率 = 40 : 2
- 自己动手写Docker系列 -- 6.3 手动配置容器网络(下)
- JAVA实现图的邻接表以及DFS
- 【Postgresql】pg掉电后无法重启
- 设计模式之创建型(1)-简单工厂
- CMS网站页面管理开发汇总
- C# 实现局域网的windows环境下的桌面分享
- HttpSession介绍
- 《大话数据结构(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数组+栈+链表+图+队列+树+堆+二叉树+哈希表+立钻哥哥+==)
- 未来教育计算机二级学生文档,未来教育计算机二级MS-office题库(解题步骤)题库.docx...
- matlab kdj代码,KDJ交易系统原理、用法及源代码(KDJ系统)
- 计算机组装实验老毛桃u盘报告,老毛桃winpe硬盘安装版制作教程
- SD卡和TF卡的区别/差异
- java获取生僻字_生僻字与16进制的转换
- python做excel自动化视频教程-从零基础入门到精通用Python处理Excel数据视频教程...
- 手机排行榜,手机党必看!