Queue接口分析:add和offer区别,remove和poll方法到底啥区别
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()的区别?
区别:两者都是往队列尾部插入元素,不同的时候,当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false
- java Queue中 add/offer,element/peek,remove/poll区别
转自https://blog.csdn.net/u012050154/article/details/60572567 java Queue中 add/offer,element/peek,remov ...
- 学习笔记之Java队列Queue中offer/add函数,poll/remove函数,peek/element函数的区别
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用. Java中Que ...
- LinkedBlockingQueue的put,add跟offer的区别
LinkedBlockingQueue的put,add和offer的区别 最近在学习<<Java并发编程实践>>,有很多java.util.concurrent包下的新类.Li ...
- LinkedBlockingQueue的put,add跟offer的区别(转)
LinkedBlockingQueue的put,add和offer的区别 最近在学习<<Java并发编程实践>>,有很多java.util.concurrent包下的新类.Li ...
- 【总文档】rac增加新节点的方法步骤 How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterware and RAC
[总文档]How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterw ...
- docker Dockerfile指令ADD和COPY的区别,添加目录方法
docker Dockerfile指令ADD和COPY的区别,添加目录方法 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中.其格式是: ADD 源 ...
- Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?
接着上篇继续更新. /*请尊重作者劳动成果,转载请标明原文链接:*/ /*https://www.cnblogs.com/jpcflyer/p/10759447.html* / 题目一:Hashtab ...
- equals方法和==的区别
equals方法和==的区别 首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = &quo ...
随机推荐
- 【前端_css】RGB 常用颜色列表
转载博客:RGB 常用颜色列表
- C语言之整除
除法运算符:/ 当除数和被除数都整形时,就是整除. 当浮点数和整数放到一起运算时,C语言会将整数转换成浮点数,然后进行浮点数的运算. #include<stdio.h> int main( ...
- day39_8_23mysql的其他内容(视图等)
一.视图 MySQL中有一种比较方便的表,就是视图(view). 什么是视图? 视图就是通过查询获得一张虚拟表,然后将其保存,下次可以直接使用这个视图. 使用视图就可以不需要重复查询/连接表,在代码层 ...
- 用Jetpack的Site Accelerator为网站CDN加速
Jetpack 的Site Accelerator站点加速器(前身为 Photon,注意:“Photon”现在是站点加速器的一部分)允许 Jetpack 优化图像并通过他们的全球服务器网络CDN提供图 ...
- 10-tensorflow-tf.concat()
Concatenates tensors along one dimension. t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] ...
- Revit 2019 下载链接
[安装环境]:win7/win8/win10 [64位下载] 百度网盘链接:pan.baidu.com/s/1Vq5Cnyj1G-oMNup_sXvxfQ 提取码:d6xd
- 深度学习accuracy
accuracy=(1+3)/(1+2+3+4),即在所有样本(例子)中做出正确预测的的比例,或者说正确预测的样本数占总预测样本数的比值. precision=(1)/(1+2),指的是正确预测的正样 ...
- LG2530 「SHOI2001」化工厂装箱员 高维DP+记忆化搜索
问题描述 LG2530 题解 设\(opt[i][a][b][c][d]\)代表装到第\(i\)个后,第\(1,2,3\)手上分别还剩\(a,b,c\)个的最小操作数. 记忆化搜索即可. 启示:如果状 ...
- webapi序列化控制
我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为json,xml等),但是如果Controller的自动序列化后的结果不是我们想要的该 ...
- 【oracle】获取指定表空间的所有表名
select owner||'.'||table_name from dba_tables where tablespace_name='A';