Queue 队列的用法

简介: 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。以下实例演示了队列(Queue)的用法:import java.
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

以下实例演示了队列(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

 

 

 

 Queue  概念

队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:

 

add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常
offer       添加一个元素并返回true       如果队列已满,则返回false
poll         移除并返问队列头部的元素    如果队列为空,则返回null
peek       返回队列头部的元素             如果队列为空,则返回null
put         添加一个元素                      如果队列满,则阻塞
take        移除并返回队列头部的元素     如果队列为空,则阻塞

 

remove、element、offer 、poll、peek 其实是属于Queue接口。 

 

 

相关文章
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
详解:Poe AI国内版_国内使用Poe AI的最优选择!
Poe 的出现标志着 Quora 对 AI 和自然语言处理 (NLP) 技术的深入探索,预示着 AI 在我们日常生活中将扮演越来越重要的角色。
643 13
|
数据库
【NI Multisim 14.0原理图设计基础——查找元器件】
原理图有两个基本要素,即元器件符号和线路连接。绘制原理图的主要操作就是将元器件符号放置在原理图图纸上,然后用线将元器件符号中的引脚连接起来,建立正确的电气连接。在放置元器件符号前,需要知道元器件符号在哪一个元器件库中,并载人该元器件库。 一、查找元器件 在加载元器件库的操作有一个前提,就是用户已经知道了需要的元器件符号在哪个元器件库中,而实际情况可能并非如此。此外,当用户面对的是一个庞大的元器件库时,逐个寻找列表中的所有元器件,直到找到自己想要的元器件为止,会是一件非常麻烦的事情,而且工作效率会很低。NIMultisim4.0提供了强大的元器件搜索能力,可以帮助用户轻松地在元器件库中定位元器件
1964 0
【NI Multisim 14.0原理图设计基础——查找元器件】
|
弹性计算 运维 Kubernetes
闲置计费 | Serverless 冷启动与成本间的最优解
函数计算闲置计费功能的发布,帮助用户进一步降低使用预留实例的成本,可以让用户只为真实使用的预留资源付费。
闲置计费 | Serverless 冷启动与成本间的最优解
|
存储 Web App开发 大数据
iPhone 数据将会存在国内公司的服务器上,这会有哪些影响?
iPhone 数据将会存在国内公司的服务器上,这会有哪些影响?
530 0
|
弹性计算 缓存 网络协议
阿里云服务器ECS通用算力型 u1实例性能详解
阿里云服务器u1通用算力型ECS实例,CPU处理器型号2.5 GHz主频的Intel Xeon Platinum 8163(Skylake)或者8269CY(Cascade Lake)
1410 0
阿里云服务器ECS通用算力型 u1实例性能详解
|
XML 算法 Java
FreeSWITCH 空号检测 模块 mod_da2使用说明
mod_da2是顶顶通开发的一个FreeSWITCH回铃音检测模块(通过分析FreeSWITCH早期媒体的声音,得到被叫号码状态【可以识别到回铃音、忙音、彩铃、空号、通话中,关机、停机,语音信箱和留言等各种号码状态】)
715 0
|
NoSQL Java 关系型数据库
如何保护 SpringBoot 配置文件中的敏感信息
如何保护 SpringBoot 配置文件中的敏感信息
如何保护 SpringBoot 配置文件中的敏感信息
|
资源调度 分布式计算 大数据
面向大数据与云计算调度挑战的阿里经济体核心调度系统—Fuxi 2.0全揭秘
随阿里经济体和阿里云丰富的业务需求(尤其是双十一)和磨练,伏羲的内涵不断扩大,从单一的资源调度器(对标开源系统的YARN)扩展成大数据的核心调度服务,覆盖数据调度(Data Placement)、资源调度(Resouce Management)、计算调度(Application Manager)、和本地微(自治)调度(即正文中的单机调度)等多个领域,并在每一个细分领域致力于打造超越业界主流的差异化能力。
4297 1
面向大数据与云计算调度挑战的阿里经济体核心调度系统—Fuxi 2.0全揭秘
|
存储 负载均衡 架构师
创业做一个App究竟要花多少钱?
创业做一个App究竟要花多少钱?
1557 0
创业做一个App究竟要花多少钱?
|
人工智能 监控 算法
人工智能在工作场景下的新兴技术及伦理问题
人工智能正在迅速的进入工作场所。因为人工智能能够在瞬间做出明智的预测,并以人类无法匹敌的规模完成特定任务,因而正在被应用于从业务流程到分析的所有领域。
371 0