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)用法相关推荐

  1. java中的Queue队列的用法

    大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...

  2. java队列(Queue)用法总结

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.队列的特点 队列是一种比较特殊的线 ...

  3. deque stack java_一文弄懂java中的Queue家族

    简介 java中Collection集合有三大家族List,Set和Queue.当然Map也算是一种集合类,但Map并不继承Collection接口. List,Set在我们的工作中会经常使用,通常用 ...

  4. C++队列queue用法详解

    一.定义 queue是一种容器转换器模板,调用#include< queue>即可使用队列类. 二.queue初始化 queue<Type, Container> (<数 ...

  5. java中的基本用法

    java中的基本用法 关键字:专门用途的字符串 所有java关键字都是小写英文 标识符 java常量 java变量 ■ 作用域:起作用的区域■ 使用前必须先声明,在赋值.使用变量名访问这块区域 jav ...

  6. Java中getResourceAsStream的用法

    Java中getResourceAsStream的用法 首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String p ...

  7. Java中getResourceAsStream的用法小结

    2019独角兽企业重金招聘Python工程师标准>>> Java中getResourceAsStream的用法小结 一.Java中的getResourceAsStream主要有以下三 ...

  8. java中substring的用法

    2019独角兽企业重金招聘Python工程师标准>>> java中substring的用法 str=str.substring(int beginIndex);截取掉str从首字母起 ...

  9. JAVA中Final的用法

    JAVA中Final的用法 1. 修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的 ...

最新文章

  1. win7 mysql读写分离_mysql 主从复制 读写分离配置
  2. 排序算法之——插入排序
  3. SAP S4HANA的product搜索的动态SQL语句的拼接原理
  4. java 最后的异常_java – 最后不要抛出堆栈溢出异常
  5. .NET如何将字符串分隔为字符
  6. 互联网晚报 | 2月20日 星期日 | 天猫回应“改名转自营”;上汽奥迪正式进驻成都;谷爱凌在抖音开启直播首秀...
  7. c 语言程序设计形考任务一,C语言程序设计形考任务.doc
  8. linux 设置防火墙ip网段,网络防御-防火墙设置IP网段规则
  9. mac安装软件提示没有权限
  10. 初中英语和计算机融合的教学案例,初中英语与信息技术整合教学案例
  11. Neo4j之Cypher概述
  12. python办公自动化之word表格跨页断行-AllowBreakAcrossPages
  13. 计算机PPT教材教法,小语教材教法讲义课件_电脑基础知识_it计算机_专业资料.ppt...
  14. 笔记:《高效能人士的七个习惯》第七章 习惯四 双赢思维——人际领导的原则
  15. 使用SVN的commit上传如何全选文件
  16. Android RecyclerView之RecycledViewPool、SortedListAdapter
  17. 写作副业怎么弄?写文章的副业应该怎么做?
  18. 丁险峰:数字革命将推动物理世界数字化
  19. 对博士学位说永别(转自王垠blog)
  20. 大电流降压模块设计TPS5430

热门文章

  1. 解决DBeaver无法查看MySQL执行计划问题
  2. wps xml转换表格_WPS技巧 | 掌握这 11 个文档技巧,能帮你节省大量工作时间
  3. Ubuntu更改屏幕分辨率(通过配置文件实现)
  4. ARMlinux kernel 启动之start_kernel (二)
  5. python动态规划若干问题
  6. 一加连续点Android版本号,一加6氧OS正式版固件升级ROM包Android9.0Pie刷机包官方版...
  7. CDR插件开发之Addon插件003 - 认识解决方案(sln)和项目(csproj)文件
  8. 字符串处理: 对文本进行半角全角转换
  9. Mysql 5.7 卸载、重新解压安装
  10. 考计算机一级要2B铅笔嘛,考试中的答题卡为什么用2B铅笔填涂,看完你就明白了...