java 栈 队列 接口_Java队列接口

java 栈 队列 接口

介绍:

队列是FIFO(先进先出)抽象数据类型(ADT)。 换句话说,按插入顺序将元素删除。

java.util.Queue是Java 的接口,并且从java.util.Collection扩展。 一些常用的Queue实现类包括LinkedList, ArrayDequePriorityQueue

队列类型:

队列有两个主要类别:

1.阻塞队列:这是具有固定容量有界队列。 这意味着我们必须在创建队列时提供队列的容量。

java.util.concurrent包中提供了有界队列的实现类 例如,一个ArrayBlockingQueue

2.非阻塞队列: java.util包下的队列实现属于此队列类别。 例如, LinkedList或PriorityQueue

顾名思义, 这些元素是无限的,我们可以根据需要插入任意数量的元素。

关键方法:

让我们看一下Queue接口公开的最常用方法:

引发异常:

下面的方法将尝试在队列上进行操作。 如果由于某种原因(例如由于容量问题)而失败,则会抛出运行时异常:

1.

使用add() ,我们可以将元素添加到队列中:

Queue<Integer> queue = new LinkedList<>();queue.add(1);
queue.add(2);
queue.add(3);

如果元素插入成功,则返回true 。 否则,它将引发IllegalStateException。

2.

我们可以使用remove()方法来检索和删除队列头部的元素

int removedItem = queue.remove();System.out.println(removedItem); //prints 1System.out.println(queue); // [2, 3]

请注意,我们从队列中删除了第一个元素。 因此,现在我们的队列仅包含[2,3]

在空队列上调用时,此方法将引发NoSuchElementException

3.

此方法将仅返回队列的head元素,而不会将其删除

int topItem = queue.element(); // 2System.out.println(queue); //[2, 3]

请注意,我们的队列仍然包含两个元素。

就像remove()一样 ,它将为空队列抛出NoSuchElementException异常。

返回特殊值:

现在,我们将介绍上述方法的细微变化。 这组方法不会引发异常。 当他们无法执行操作时,他们宁愿返回一些值

1.

就像add()一样 ,我们有一个offer()方法,可以用来插入元素:

Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);

如果无法插入,它将返回false。

2.

我们可以使用poll()检索和删除一个元素:

int removedItem = queue.poll(); // returns 1System.out.println(queue); //[2, 3]

对于空队列,它将仅返回一个值。

3.

element()类似,它只是检索队列的最前面的元素:

int topItem = queue.peek(); // 2System.out.println(queue); //still [2, 3]

由于我们已经删除了1 ,因此这里的顶部元素是2

如果在空队列中使用此方法,则将获得null值。

其他有用的方法:

由于QueueCollection接口扩展而来,因此它也从该接口继承方法。 一些有用的包括:

1. size():返回队列的大小

2. contains():如果元素存在于队列中,则返回true

3. isEmpty() 对于空队列,它将返回true 。 否则为false

结论:

在本文中,我们讨论了Java中的Queue接口。 我们介绍了此接口公开的所有主要方法。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/05/java-queue-interface.html

java 栈 队列 接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jakarta ee_Jakarta EE 8状态

jakarta ee遵循Jakarta EE的人们可能知道即将发布的Jakarta EE 8在功能上将与Java EE 8等效。其原因是我们想证明从Oracle的传输已经完成&#xff0c;并且我们能够产生这些流程&#xff0c;规范&#xff0c;测试套件以及通过Eclipse Foundation的兼容实现。 到目前为止&#x…

IntelliJ IDEA如何查看接口的实现类以及如何查看被实现的接口

在接口的左边有个向下的小箭头&#xff0c;点击小箭头就能看到接口的实现类和方法的实现&#xff1a; 在实现类的左边有个向上的小箭头&#xff0c;可以查看被实现的接口和被覆盖重写的方法&#xff1a;

c#自定义控件资源释放问题_定义资源

c#自定义控件资源释放问题在Fielding的论文中 &#xff0c;资源描述为&#xff1a; “可以命名的任何信息”……“文档或图像&#xff0c;临时服务&#xff08;例如&#xff0c;“洛杉矶今天的天气”&#xff09;&#xff0c;其他资源的集合&#xff0c;非虚拟对象&#xff08…

MySQL数据库存入日期(java.sql.Date)数据,天数会少一天的问题

网络上给的解决办法&#xff1a; 这是数据库服务器时区的问题&#xff0c;即连接参数 serverTimezone 的问题&#xff0c;默认情况下 serverTimezoneUTC&#xff0c;改成 HongKong 或者 Asia/Shanghai 就可以了。如下所示&#xff1a; jdbc:mysql://localhost:3306/test?useU…

spring的bean范围_Spring Bean范围

spring的bean范围介绍&#xff1a; Spring核心容器实例化bean并管理其生命周期。 在定义bean时&#xff0c;我们可以提供其范围。 除非明确提供&#xff0c;否则单例是Spring容器中Bean的默认范围。 Spring提供了五种类型的bean作用域。 在本教程中&#xff0c;我们将探讨它们…

java.util.Date转换成java.sql.Date

// 获取当前的系统时间&#xff0c;以java.util.Date对象返回 Date dateUtil new Date(); // 获取当前的系统时间&#xff0c;以时间戳返回 long l System.currentTimeMillis();时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现…

省编码市编码区县编码_无浪费编码

省编码市编码区县编码本文介绍了如何通过减少软件堆栈中的浪费来高效解决有意义的事件处理问题。 Java通常被视为无法在低内存环境中有效运行的内存猪。 目的是证明许多人认为不可能的事情&#xff0c;有意义的java程序几乎可以在没有内存的情况下运行。 示例流程 在Java的单…

Java日期时间字符串和毫秒相互转换的方法

参考链接&#xff1a; 1.https://www.jb51.net/article/130195.htm 2.https://blog.csdn.net/yhj19920417/article/details/73799842?locationNum10&fps1

谷歌本地不支持websocket_django开发-websocket的实现

今天介绍下如何在django中使用channels实现websocket。其实还可以使用dwebsocket实现websocket&#xff0c;这里不做介绍。首先介绍一个概念ASGI。ASGI异步网关协议接口&#xff0c;一个介于网络协议服务和Python应用之间的标准接口&#xff0c;能够处理多种通用的协议类型&…

我要正式开始《一个项目征服Java中高级体系》

在互联网上经常看到很多人说35岁危机的问题、大厂裁员、互联网寒冬这些问题。我感觉比较幸运的是&#xff0c;在之前大环境还不是很坏时候就被裁了一次&#xff0c;所以我很早就开始做持续的准备&#xff0c;现在不好说一定能怎么样&#xff0c; 至少自己在持续的探索适合自己的…

cuba 平台_CUBA 7的新功能

cuba 平台三年前&#xff0c;我们宣布了该框架的第二个公开可用的主要版本。 CUBA 6是改变游戏规则的版本–许可从专有转为Apache 2.0。 那些日子&#xff0c;我们甚至无法猜测从长远来看它将把框架带到哪里。 CUBA社区开始呈指数级增长&#xff0c;因此我们了解了开发人员如何…

java.util.Date详解

获取当前的系统时间&#xff1a; Date date new Date();获取毫秒数&#xff1a; long time date.getTime();毫秒数转成 Date 对象&#xff1a; long l 23434324324343L; Date date new Date(l);比较两个 Date 对象&#xff1a; SimpleDateFormat sdf new SimpleDateFo…

夸克代码_关于夸克的思考

夸克代码Quarkus&#xff0c;新的“超音速&#xff0c;亚原子” Java框架目前正受到广泛关注。 对于企业Java的未来而言&#xff0c;此构建和运行时工具背后的思想确实比我们感兴趣。 使用Quarkus有什么好处和缺点&#xff1f; 摆脱动力 Quarkus认为&#xff0c;在容器化的世…

ntdll 异常代码0xc0000374_不要把异常当做业务逻辑,这性能可能你无法承受

一&#xff1a;背景1. 讲故事在项目中摸爬滚打几年&#xff0c;应该或多或少的见过有人把异常当做业务逻辑处理的情况(┬&#xff3f;┬)&#xff0c;比如说判断一个数字是否为整数,就想当然的用try catch包起来&#xff0c;再进行 int.Parse&#xff0c;如果抛异常就说明不是整…

java中的hashset_Java中的HashSet

java中的hashset介绍&#xff1a; Java中的HashSet实现Set接口&#xff0c;即它不允许重复。 它在内部由HashMap支持&#xff0c;该哈希表基于哈希原理。 我们可以在HashSet中存储一个空值。 默认容量为16&#xff0c;负载系数为0.75&#xff0c;其中&#xff1a; Load facto…

win32bridge.server.exe函数不正确_修电脑?不,其实我们学的是......

COMPUTER计信学子Python?JAVA?C?C?HTML?身为重师计信人逢年过节总免不了被亲戚们“盘问”一番必问清单第一名就是“专业”他们往往从字面去理解而我们计信人被误解的频率相当高“学计算机的肯定会修电脑对吧”请接着看下去吧!我们学的到底是什么&#xff1f;(点击查看答案…

SimpleDateFormat详解

SimpleDateFormat 中的时间标识含义&#xff1a; G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一月中第几个星期 a 上午 / 下午 标记符 k 时 在一天中 …

java uuid_Java UUID

java uuid介绍&#xff1a; UUID&#xff08;通用唯一标识符&#xff09;表示一个128位长的唯一值 。 它也被普遍称为GUID&#xff08;全球唯一标识符&#xff09;。 UUID的标准表示形式由十六进制数字组成&#xff1a; 533a4559-e55c-18b3-8456-555563322002并具有36个字符 …

JDK 9.0.4 报错:程序包 com.sun.xml.internal.fastinfoset.stax.events 不存在/不可见

IDE&#xff1a;IntelliJ IDEA 构建工具&#xff1a;Maven JDK版本&#xff1a;JDK 9.0.4 在代码中使用下面的工具类&#xff1a; com.sun.xml.internal.fastinfoset.stax.events.Util报错如下&#xff1a; 或者 光标移到 Util 处&#xff0c;按下 Option Enter&#xff1a…

3650m5设置u盘启动_系统重装必备神器,U盘如何制作启动盘?

早些年的时候&#xff0c;电脑安装系统需要光盘&#xff0c;但是现在光盘也逐渐退出历史舞台。不管是台式计算机还是笔记本&#xff0c;光驱这个东西也逐渐消失。如果自己的计算机没有光驱&#xff0c;电脑又无法开机需要重装系统&#xff0c;这个时候该怎么办呢&#xff1f;可…