Java中队列(Queue)用法
Java中队列的用法
- 1. 队列的定义
- 2. 队列的基本操作
- 3. Java中队列的应用
1. 队列的定义
队列(Queue):队列简称队,也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。
这和我们日常生活中的排队是一致的,最早排队的也是最早离队的。其操作的特性是先进先出 (First In First Out, FIFO),故又称为先进先出的线性表,如图1所示。
队头(Front):允许删除的一端,又称为队首。
队尾(Rear):允许插入的一端。
空队列:不含任何元素的空表。
2. 队列的基本操作
InitQueue(&Q):初始化队列,构造一个空队列Q。
QueueEmpty(Q):判队列空,若队列Q为空返回true,否则返回false。
EnQueue(&Q, x):入队,若队列Q未满,将x加入,使之成为新的队尾。
DeQueue(&Q, &x):出队,若队列Q非空,删除队头元素,并用x返回。
GetHead(Q, &x):读队头元素,若队列Q非空,则将队头元素赋值给X。
需要注意的是,队列是操作受限的线性表,所以,不是任何对线性表的操作都可以作为队列的操作。比如,不可以随便读取队列中间的某个数据。
3. Java中队列的应用
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
在Java的标准库中,队列接口Queue定义了以下几个方法:
- int size():获取队列长度;
- boolean add(E)/boolean offer(E):添加元素到队尾;
- E remove()/E poll():获取队首元素并从队列中删除;
- E element()/E peek():获取队首元素但并不从队列中删除。
分号具体的区别可以参考廖雪峰老师的网站使用Queue其中有代码示例会更直观一些。
最后直接写一些简单的操作
import java.util.LinkedList;
import java.util.Queue;public class Main {public static void main(String[] args) {//add()和remove()方法在失败的时候会抛出异常(不推荐)Queue<String> queue = new LinkedList<String>();//添加元素queue.offer("a");queue.offer("b");queue.offer("c");queue.offer("d");queue.offer("e");for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("element="+queue.element()); //返回第一个元素 for(String q : queue){System.out.println(q);}System.out.println("===");System.out.println("peek="+queue.peek()); //返回第一个元素 for(String q : queue){System.out.println(q);}}
}
最后的输出结果为
a
b
c
d
e
===
poll=a
b
c
d
e
===
element=b
b
c
d
e
===
peek=b
b
c
d
e
Java中队列(Queue)用法相关推荐
- java中的Queue队列的用法
大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...
- java队列(Queue)用法总结
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.队列的特点 队列是一种比较特殊的线 ...
- deque stack java_一文弄懂java中的Queue家族
简介 java中Collection集合有三大家族List,Set和Queue.当然Map也算是一种集合类,但Map并不继承Collection接口. List,Set在我们的工作中会经常使用,通常用 ...
- C++队列queue用法详解
一.定义 queue是一种容器转换器模板,调用#include< queue>即可使用队列类. 二.queue初始化 queue<Type, Container> (<数 ...
- java中的基本用法
java中的基本用法 关键字:专门用途的字符串 所有java关键字都是小写英文 标识符 java常量 java变量 ■ 作用域:起作用的区域■ 使用前必须先声明,在赋值.使用变量名访问这块区域 jav ...
- Java中getResourceAsStream的用法
Java中getResourceAsStream的用法 首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String p ...
- Java中getResourceAsStream的用法小结
2019独角兽企业重金招聘Python工程师标准>>> Java中getResourceAsStream的用法小结 一.Java中的getResourceAsStream主要有以下三 ...
- java中substring的用法
2019独角兽企业重金招聘Python工程师标准>>> java中substring的用法 str=str.substring(int beginIndex);截取掉str从首字母起 ...
- JAVA中Final的用法
JAVA中Final的用法 1. 修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的 ...
最新文章
- win7 mysql读写分离_mysql 主从复制 读写分离配置
- 排序算法之——插入排序
- SAP S4HANA的product搜索的动态SQL语句的拼接原理
- java 最后的异常_java – 最后不要抛出堆栈溢出异常
- .NET如何将字符串分隔为字符
- 互联网晚报 | 2月20日 星期日 | 天猫回应“改名转自营”;上汽奥迪正式进驻成都;谷爱凌在抖音开启直播首秀...
- c 语言程序设计形考任务一,C语言程序设计形考任务.doc
- linux 设置防火墙ip网段,网络防御-防火墙设置IP网段规则
- mac安装软件提示没有权限
- 初中英语和计算机融合的教学案例,初中英语与信息技术整合教学案例
- Neo4j之Cypher概述
- python办公自动化之word表格跨页断行-AllowBreakAcrossPages
- 计算机PPT教材教法,小语教材教法讲义课件_电脑基础知识_it计算机_专业资料.ppt...
- 笔记:《高效能人士的七个习惯》第七章 习惯四 双赢思维——人际领导的原则
- 使用SVN的commit上传如何全选文件
- Android RecyclerView之RecycledViewPool、SortedListAdapter
- 写作副业怎么弄?写文章的副业应该怎么做?
- 丁险峰:数字革命将推动物理世界数字化
- 对博士学位说永别(转自王垠blog)
- 大电流降压模块设计TPS5430
热门文章
- 解决DBeaver无法查看MySQL执行计划问题
- wps xml转换表格_WPS技巧 | 掌握这 11 个文档技巧,能帮你节省大量工作时间
- Ubuntu更改屏幕分辨率(通过配置文件实现)
- ARMlinux kernel 启动之start_kernel (二)
- python动态规划若干问题
- 一加连续点Android版本号,一加6氧OS正式版固件升级ROM包Android9.0Pie刷机包官方版...
- CDR插件开发之Addon插件003 - 认识解决方案(sln)和项目(csproj)文件
- 字符串处理: 对文本进行半角全角转换
- Mysql 5.7 卸载、重新解压安装
- 考计算机一级要2B铅笔嘛,考试中的答题卡为什么用2B铅笔填涂,看完你就明白了...