Java 队列接口

一、Queue 接口核心概念

Queue是 Java 集合框架(java.util包)中的一个接口,专门用于模拟 “先进先出(FIFO)” 的队列结构,就像日常生活中排队买票 —— 先到的人先买,后到的人排后面。

  • 它继承自Collection接口,所以拥有 Collection 的通用方法(如size()isEmpty())。
  • 核心设计目标:处理 “等待 / 排队” 类场景(如线程池任务排队、消息队列)。

二、Queue 接口核心方法

Queue 定义了两组功能相似的方法(区别在于:操作失败时,一组抛异常,一组返回特殊值),新手优先记 “抛异常” 的核心方法即可:

操作类型抛异常(推荐新手用)返回特殊值(无元素时返回 null/false)说明
入队(添加元素到队尾)add(E e)offer(E e)队列满时,add 抛IllegalStateException,offer 返回 false
出队(移除队首元素)remove()poll()队列为空时,remove 抛NoSuchElementException,poll 返回 null
查看队首元素(不移除)element()peek()队列为空时,element 抛NoSuchElementException,peek 返回 null

三、常用实现类(新手必知)

Queue 是接口,不能直接实例化,实际开发中常用以下实现类:

  1. LinkedList
    • 基于链表实现,支持队列 + 双端队列(Deque),非线程安全。
    • 最常用的 Queue 实现,适合普通场景(如业务层临时排队)。
  2. ArrayDeque
    • 基于数组实现,比 LinkedList 更快(数组访问效率高),非线程安全。
    • 适合高性能的队列 / 栈场景。
  3. PriorityQueue
    • 优先级队列(打破 FIFO),元素按优先级排序(默认升序),非线程安全。
    • 比如:任务队列中 “高优先级任务先执行”。
  4. BlockingQueue(子接口)
    • 阻塞队列,线程安全,核心用于多线程场景(如线程池)。
    • 常用实现:ArrayBlockingQueueLinkedBlockingQueue

四、实战代码示例(新手可直接运行)

java

运行

import java.util.LinkedList; import java.util.Queue; public class QueueDemo { public static void main(String[] args) { // 1. 创建Queue实例(用LinkedList实现) Queue<String> queue = new LinkedList<>(); // 2. 入队(添加元素) queue.add("用户1"); // 抛异常版 queue.offer("用户2"); // 返回值版 queue.offer("用户3"); System.out.println("初始队列:" + queue); // 输出:[用户1, 用户2, 用户3] // 3. 查看队首元素(不移除) String head = queue.element(); System.out.println("队首元素:" + head); // 输出:用户1 // 4. 出队(移除队首元素) String removeUser = queue.remove(); System.out.println("出队元素:" + removeUser); // 输出:用户1 System.out.println("出队后队列:" + queue); // 输出:[用户2, 用户3] // 5. 判空+遍历 while (!queue.isEmpty()) { System.out.println("遍历出队:" + queue.poll()); } // 最终输出:遍历出队:用户2 遍历出队:用户3 } }

五、优先级队列示例(打破 FIFO)

java

运行

import java.util.PriorityQueue; import java.util.Queue; public class PriorityQueueDemo { public static void main(String[] args) { // 优先级队列(默认整数升序) Queue<Integer> priorityQueue = new PriorityQueue<>(); priorityQueue.offer(5); priorityQueue.offer(1); priorityQueue.offer(3); // 出队顺序:1 → 3 → 5(按优先级,而非添加顺序) while (!priorityQueue.isEmpty()) { System.out.println(priorityQueue.poll()); } } }

总结

  1. 核心特性:Queue 接口主打 “先进先出”,提供入队、出队、查队首三类核心方法,分 “抛异常” 和 “返回特殊值” 两种风格。
  2. 常用实现:普通场景用LinkedList,高性能场景用ArrayDeque,优先级场景用PriorityQueue,多线程场景用BlockingQueue子类。
  3. 关键区别remove()/element()操作空队列会抛异常,poll()/peek()返回 null,实际开发中根据是否需要捕获异常选择。

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

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

相关文章

如何选择合适的Queue实现类?

一、核心选型维度&#xff08;先明确这 3 点&#xff09;在选 Queue 实现类前&#xff0c;先确定你的场景满足以下哪类需求&#xff1a;基础特性&#xff1a;是否需要 FIFO&#xff08;先进先出&#xff09;、是否需要优先级、是否支持双端操作&#xff08;Deque&#xff09;&a…

kali基础介绍(Initial Access、Execution、Presistence)

kali基础介绍(Initial Access、Execution、Presistence)一、Initial Access(初始访问)图中展示的是 Kali Linux 系统中“初始访问”(直翻,翻译不对的地方,欢迎大佬指正)分类下的 6 款核心渗透测试工具,它们主要…

invokedynamic

&#x1f680; Java字节码 invokedynamic 深度解析 &#x1f4da; 什么是 invokedynamic&#xff1f; invokedynamic 是 Java 7 引入的字节码指令&#xff0c;用于实现动态语言特性和Lambda表达式。它是 Java 字节码中第5个方法调用指令。 传统的4个调用指令&#xff1a; i…

松鼠备份使用指南

一、松鼠备份介绍松鼠备份&#xff08;Squirrel Backup&#xff09;是一款专注于本地增量同步与灾备保护的轻量级工具&#xff0c;适用于中小企业、财务人员、设计团队等对数据隐私和可用性有较高要求的用户。它不依赖云服务&#xff0c;不收集用户数据&#xff0c;所有传输均在…

简单理解:无论你写的是十进制、十六进制还是八进制,最终存储到寄存器(以及内存、CPU)中的数据,本质上都是二进制形式。

这个问题问到了计算机底层数据表示的核心点上。核心原理解释首先要明确&#xff1a;无论你写的是十进制、十六进制还是八进制&#xff0c;最终存储到寄存器&#xff08;以及内存、CPU&#xff09;中的数据&#xff0c;本质上都是二进制形式。你可以把这个过程理解为&#xff1a…

简单理解:分频系数

这段枚举代码里的数值是几进制的&#xff0c;核心结论先告诉你&#xff1a;这段枚举中没有显式写数值的部分&#xff0c;默认是十进制的整数序列&#xff0c;从 0 开始依次递增。枚举数值的详细解析首先看这段枚举的定义规则&#xff1a;显式赋值的部分&#xff1a;CKCU_CKREFP…

风电功率日前场景生成方法探索

风电功率日前场景生成方法 随着可再生能源渗透率的不断提高&#xff0c;如何有效地描述其出力不确定性是电力系统日前调度所面临的巨大挑战。 针对该问题&#xff0c;提出一种基于条件生成对抗网络的可再生能源日前场景生成方法。 完美复现《基于条件生成对抗网络的可再生能源日…

基于IEEE 33节点的配电网经济调度 设备包括光伏,风电,燃气轮机,柴油发电机和储能 以综合...

基于IEEE 33节点的配电网经济调度 设备包括光伏&#xff0c;风电&#xff0c;燃气轮机&#xff0c;柴油发电机和储能 以综合成本最优为目标 包括各设备的调用成本和购电费用以及环境费用 考虑各设备的运行约束和潮流约束 其中潮流使用前推回代法计算 代码可保证完美运行 这年头…

改进A星算法,机器人路径规划导航A星算法和DWA算法融合,可以实现动态避障,有算法matlab...

改进A星算法&#xff0c;机器人路径规划导航A星算法和DWA算法融合&#xff0c;可以实现动态避障&#xff0c;有算法matlab源文件&#xff0c;可以直接用。清晨调试机器人底盘时突然想到&#xff0c;传统A星就像拿着纸质地图的旅行者——规划好的路线遇到临时障碍就傻眼了。上个…

MMC玩转指南:从零搭建20kV直流输电系统

MMC-HVDC两端直流输电&#xff0c;直流电压20kV/每桥臂10个子模块&#xff0c;系统容量10WM。 包括系统级控制&#xff0c;换流站级控制&#xff0c;阀级控制等。 matlab/simulink学习MMC必备&#xff0c;整流逆变&#xff0c;环流抑制/子模块电容排序均压/最近电平逼近/优化调…

提示工程分布式架构的自动化运维:Ansible vs Terraform,批量管理节点

深入剖析&#xff1a;Ansible vs Terraform&#xff0c;分布式架构的自动化运维核心利器与提示工程实践 在分布式架构大行其道的今天&#xff0c;面对动辄几十、数百乃至上千节点的部署和管理挑战&#xff0c;如何实现高效、一致、安全的运维操作成为每个架构师和运维工程师的核…

【水下图像增强融合算法】基于融合的水下图像与视频增强研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真…

Vue3 系列教程(三)插值表达式与常用文本指令

前言 第2课已掌握Vue3应用的创建、挂载及单文件组件的基础结构&#xff0c;本课将聚焦Vue3中最基础的页面渲染方式——插值表达式与文本指令&#xff0c;理解不同文本渲染方式的使用规则与适用场景&#xff0c;掌握基础数据到页面的渲染逻辑&#xff0c;为后续动态数据展示打下…

大模型微调教程(一)大模型微调基础认知+零基础环境搭建

前言 欢迎来到大模型微调的入门课堂&#xff01;对于初学者来说&#xff0c;入门的关键不是 “学得多快”&#xff0c;而是 “学得扎实”。这节课我们会先花时间把微调的核心概念砸实 —— 用生活化的场景帮你理解 “预训练模型”“Tokenizer”“显存” 这些关键术语&#xff…

Finisar AOC/DAC 在高速网络互连中的应用解析

在当今数据中心与大规模计算平台中&#xff0c;高速链路互连已经成为网络性能瓶颈之一。为了实现服务器、交换机、存储等设备之间的高带宽、低延迟通信&#xff0c;光模块和高速线缆成为关键部件。Finisar Corporation 是一家专注于光通信组件制造的公司&#xff0c;其包括 AOC…

完整教程:Android 宣布 Runtime 编译速度史诗级提升:在编译时间上优化了 18%

完整教程:Android 宣布 Runtime 编译速度史诗级提升:在编译时间上优化了 18%pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

2026制动改装品牌榜 CMYCH卡钳性能对比

2026制动改装品牌榜 CMYCH卡钳性能对比2026制动改装品牌榜 CMYCH卡钳性能对比 一、行业背景与筛选维度 根据《中国汽车改装技术标准与服务白皮书》2025版数据,国内汽车制动改装市场规模突破320亿元,年复合增长率达18…

Amphenol CS(High Speed IO)PCIe 与 QSFP 高速 IO 线缆设计与选型实践

在现代高性能计算、数据中心互联和通信系统中&#xff0c;高速 IO 线缆是实现可靠数据传输的关键基础构件。随着 PCIe 及 QSFP 等高速协议的广泛应用&#xff0c;对线缆的信号完整性、阻抗匹配、串扰抑制以及环境适应性提出了更高要求。 Amphenol CS&#xff08;High Speed IO&…

服务器互联中的 Amphenol ICC(FCI)电缆组件选型逻辑

在服务器互联、存储设备和数据通信架构中&#xff0c;连接器与电缆组件构成了设备之间传输链路的关键一环。Amphenol ICC&#xff08;原 FCI&#xff09; 是全球互连系统解决方案的知名供应者&#xff0c;其推出的电缆组件与连接器体系因卓越的可靠性和工程适配性&#xff0c;在…

ATGBICS 光模块兼容光缆选型与互连兼容性测试指南

在现代数据通信和网络架构中&#xff0c;光模块及其互连光缆是高带宽链路不可或缺的组成部分。随着行业标准&#xff08;如 SFP、QSFP、OSFP 等 MSA 规范&#xff09;的成熟&#xff0c;基于光纤的高速互连技术在数据中心、企业网络、服务器通信等场景中得到广泛应用。光缆组件…