java 栈 队列 接口_Java队列接口
java 栈 队列 接口
介绍:
队列是FIFO(先进先出)抽象数据类型(ADT)。 换句话说,按插入顺序将元素删除。
java.util.Queue是Java 中的接口,并且从java.util.Collection扩展。 一些常用的Queue实现类包括LinkedList, ArrayDeque和PriorityQueue 。
队列类型:
队列有两个主要类别:
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值。
其他有用的方法:
由于Queue从Collection接口扩展而来,因此它也从该接口继承方法。 一些有用的包括:
1. size():返回队列的大小
2. contains():如果元素存在于队列中,则返回true
3. isEmpty() :对于空队列,它将返回true 。 否则为false 。
结论:
在本文中,我们讨论了Java中的Queue接口。 我们介绍了此接口公开的所有主要方法。
成为第一个发表评论的人。
翻译自: https://www.javacodegeeks.com/2019/05/java-queue-interface.html
java 栈 队列 接口
java 栈 队列 接口_Java队列接口相关推荐
- java栈编程题_Java实现栈和队列面试题
面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要 ...
- java的iterator接口_java Iterator接口和LIstIterator接口分析_java_脚本之家
java Iterator接口和LIstIterator接口分析 目录 1.Iterator接口 2.ListIterator 3.Iterator和ListIterator的区别 正文 在继续看A ...
- java工厂到接口_Java基础——接口简单工厂
声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 一.接口 1.接口只做规范和声明不做实现: 2.java中类 ...
- java supplier接口_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
- interface接口_Java程序设计--接口interface(笔记)
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有继承关系,仅 ...
- java 栈的变量_Java栈和局部变量操作(一)
Java栈和局部变量操作 Java虚拟机是基于栈的机器,几乎所有Java虚拟机的指令都与操作数栈相关.栈操作包括把常量压入操作数栈.执行通用的栈操作.在操作数栈和局部变量之间往返传输值. 1常量入栈操 ...
- java map取值_Java Set接口 Map 与枚举
Set接口 概述 一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素 特点 Set接口是 ...
- java 飞信接口_java 飞信接口
本接口走的是移动wap飞信接口,绝对安全 package net.duohuo.tengzhinei.Feition; import java.io.BufferedReader; import ja ...
- java 继承和内部类_Java自学-接口与继承 内部类
Java 内部类 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤 1 : 非静态内部类 非静态内部类 BattleScore "战斗成绩" 非静态内部类可以直接 ...
最新文章
- mp4 android自动播放,Android 使用VideoView播放MP4的简单实现
- 电脑启动后,没有桌面
- 学习 Android O HIDL
- WP7页面的数值传递和对象传递
- TortoiseSVN 的 bin 目录下面没有 svn.exe(已测试)
- 1024,阿里云惊喜 “加油包” 让你 “猿” 力觉醒!
- 工科神器matlab高校遭禁用,网友:关我p事,python可取而代之
- android builder布局方式,android – AlertDialog.Builder与自定义布局和EditText;无法访问视图...
- 常用功能-删除功能测试点
- wx.request 请求500弹出来_精选感恩朋友的作文500字七篇
- Corel Painter 2022 for Mac(初学者可驾驭的绘画软件)
- 进入32位保护模式之路
- JAVA——根据QQ群号得到idkey以及QQ群加群链接[网页版本]解决方案
- Python手动安装Jieba库(Win11)
- GIF动画录制工具(写教程时用的比较小巧的gif工具)
- 教你看懂MOSFET数据手册
- sqLite数据库读C#
- CTF新手抓包找flag
- 观察者模式Observer -- 深入理解
- Unity--内置转换矩阵
热门文章
- Tickets HDU - 1260
- 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 Fishing Master
- [ZJOI2007]矩阵游戏
- 数据结构二之线段树Ⅱ——KiKi‘s K-Number,ball,The Child and Sequence,「雅礼集训 2017 Day1」市场,Atlantis
- YBTOJ洛谷P4869:出现位置(线性基)
- 欢乐纪中某B组赛【2019.1.28】
- jzoj1273-袁绍的刁难【进制转换】
- ssl初一组周六模拟赛【2018.4.14】
- L. Mod(预处理+分块)
- 转圈游戏(luogu 1965)