当前位置: 首页 > news >正文

java中的队列Queue

一、Queue接口定义

Queue是Java集合框架中定义的队列接口,遵循**先进先出(FIFO)**原则。其核心方法分为三类:

  1. 添加元素
    • boolean add(E e): 队列未满时添加元素,否则抛出异常
    • boolean offer(E e): 安全添加元素,队列满时返回false
  2. 移除元素
    • E remove(): 移除并返回队首元素,空队列时抛出异常
    • E poll(): 安全移除元素,空队列时返回null
  3. 检查元素
    • E element(): 查看队首元素,空队列时抛出异常
    • E peek(): 安全查看元素,空队列时返回null
二、主要实现类
  1. LinkedList

    • 基于双向链表实现,支持所有队列操作
    • 允许null元素,非线程安全
    • 示例:
      Queue<String> queue = new LinkedList<>();
      queue.offer("A");
      queue.offer("B");
      System.out.println(queue.poll()); // 输出A
      
  2. PriorityQueue

    • 基于优先级堆实现,元素按自然顺序或自定义Comparator排序
    • 不允许null元素,非线程安全
    • 示例(自定义排序):
      Queue<Integer> pq = new PriorityQueue<>((a,b) -> b - a);
      pq.offer(3);
      pq.offer(1);
      System.out.println(pq.poll()); // 输出3
      
  3. ArrayDeque

    • 基于可扩容数组实现的双端队列
    • 比LinkedList更高效的内存访问模式
三、应用场景
  1. 任务调度系统:处理异步任务请求
  2. 消息队列:实现生产者-消费者模式
  3. 广度优先搜索:存储待访问节点
  4. 缓冲池管理:控制资源访问顺序
// 典型生产者-消费者示例
BlockingQueue<Message> queue = new LinkedBlockingQueue<>();
// 生产者线程
queue.put(new Message("data"));
// 消费者线程
Message msg = queue.take();

相关文章:

  • mysql之主从切换
  • 207、【图论】孤岛的总面积
  • 【Godot4.2】Vector2向量插值的应用
  • DeepSeek 多模态大模型 Janus-Pro 本地部署教程
  • Android中的FragmentTransaction是什么以及如何使用它
  • 机器学习项目实战——信用评分与贷款风险评估(主页有源码)
  • Spring Boot整合MapStruct教程
  • Tomato 文件包含漏洞靶机 通关攻略
  • LeetCode Hot100刷题——对称二叉树
  • 高级java每日一道面试题-2025年2月22日-数据库篇[Redis篇]-Redis是什么?
  • Hi3516DV300 移植Qt
  • 数组 与 高精度
  • 蓝桥杯备考:数据结构vector-----询问学号
  • SqlServer数据库报错紧急或可疑无法访问的修复过程,亲测有效。
  • MySQL库和表的操作详解:从创建库到表的管理全面指南
  • MS-DOS 6.22 下建立 FTP 服务器
  • Oracle数据库存储结构--物理存储结构
  • 【性能优化】MySQL 生产环境 SQL 性能优化实战案例
  • Node.js学习分享(下)
  • 3-002: MySQL 中使用索引一定有效吗?如何排查索引效果?
  • 重庆一男大学生掉进化粪池死亡,重庆对外经贸学院:以学校通报为准
  • 国家发改委谈稳定外资:将研究制定鼓励外资企业境内再投资政策措施
  • 特朗普与泽连斯基通话
  • 中国古代文学研究专家、南开大学教授李剑国逝世
  • 经济日报:政府采购监管篱笆要扎得更牢
  • 河南发布高温橙警:郑州、洛阳等地最高气温将达40℃以上