Java 数据结构 优先级队列(堆)
目录常用方法常⽤接⼝介绍常用方法常⽤接⼝介绍于PriorityQueue的使⽤要注意1. PriorityQueue中放置的元素必须要能够⽐较⼤⼩不能插⼊⽆法⽐较⼤⼩的对象否则会抛出 ClassCastException异常2. 不能插⼊null对象否则会抛出NullPointerException3. 没有容量限制可以插⼊任意多个元素其内部可以⾃动扩容4. 插⼊和删除元素的时间复杂度为5. PriorityQueue底层使⽤了堆数据结构6. PriorityQueue默认情况下是⼩堆---即每次获取到的元素都是最⼩的元素优先级队列的构造// 创建⼀个空的优先级队列底层默认容量是11 PriorityQueueInteger q1 new PriorityQueue(); // 创建⼀个空的优先级队列底层的容量为initialCapacity PriorityQueueInteger q2 new PriorityQueue(100); // // list中已经包含了三个元素 PriorityQueueInteger q3 new PriorityQueue(list);三种构造方法的底层调用public PriorityQueue() { this(DEFAULT_INITIAL_CAPACITY, null); } //this调用 public PriorityQueue(int initialCapacity, Comparator? super E comparator) { // Note: This restriction of at least one is not actually needed, // but continues for 1.5 compatibility if (initialCapacity 1) throw new IllegalArgumentException(); this.queue new Object[initialCapacity]; this.comparator comparator; }插入元素的底层调用注意offer调用siftUp调用siftUpComparable调用q1.offer(10); // public boolean offer(E e) { if (e null) throw new NullPointerException(); modCount; int i size; if (i queue.length) grow(i 1); siftUp(i, e); size i 1; return true; } // siftUp的底层调用 private void siftUp(int k, E x) { if (comparator ! null) siftUpUsingComparator(k, x, queue, comparator); else siftUpComparable(k, x, queue); } // siftUpComparable的底层调用 private static T void siftUpComparable(int k, T x, Object[] es) { //强转至中的类型 Comparable? super T key (Comparable? super T) x; while (k 0) { int parent (k - 1) 1; Object e es[parent]; if (key.compareTo((T) e) 0) break; es[k] e; k parent; } es[k] key; }注意默认情况下PriorityQueue队列是⼩堆如果需要⼤堆需要⽤⼾提供⽐较器// ⽤⼾⾃⼰定义的⽐较器直接实现Comparator接⼝然后重写该接⼝中的 compare⽅法即可 // class IntCmp implements ComparatorInteger{ Override public int compare(Integer o1, Integer o2) { return o2-o1; } } public class TestPriorityQueue { public static void main(String[] args) { PriorityQueueInteger p new PriorityQueue(new IntCmp()); p.offer(4); p.offer(3); p.offer(2); p.offer(1); p.offer(5); System.out.println(p.peek()); } }

相关新闻

鸿蒙多功能工具箱开发实战(二十六)-无障碍访问支持

鸿蒙多功能工具箱开发实战(二十六)-无障碍访问支持

鸿蒙多功能工具箱开发实战(二十六)-无障碍访问支持 前言 无障碍访问是应用包容性的重要体现,帮助视障、听障等用户群体更好地使用应用。本文将讲解HarmonyOS无障碍功能的实现。 一、无障碍基础 1.1 无障碍属性 ArkUI组件支持以下无障碍属性:属性说明acce…

2026/7/26 23:35:37 阅读更多 →
TI ACTBP硬件设计解析:电容触摸与音频处理系统集成实战

TI ACTBP硬件设计解析:电容触摸与音频处理系统集成实战

1. 项目概述与核心价值在嵌入式系统开发,尤其是人机交互界面设计中,电容触摸技术因其直观、耐用和美观的特性,已经成为许多消费电子和工业产品的首选。然而,将高灵敏度的电容触摸与复杂的实时音频处理功能集成到一块紧凑的电路板上…

2026/7/26 23:35:37 阅读更多 →
云原生时代Linux内核优化与调优实践

云原生时代Linux内核优化与调优实践

1. 云原生时代对操作系统内核的新需求云计算技术发展到今天已经进入云原生阶段,这个转变对底层操作系统内核提出了全新的要求。传统Linux内核设计时主要面向物理服务器环境,而现代云环境需要内核具备更强的隔离性、弹性和资源调度能力。我在实际运维Kube…

2026/7/26 23:35:37 阅读更多 →

最新新闻

企业Agent软件工厂模式转型与产品意图边界设计

企业Agent软件工厂模式转型与产品意图边界设计

企业 Agent 技术正在经历从受控部署到软件工厂模式的重大转型。在这个过程中,产品意图作为自驱系统的第三道边界,正在重新定义企业级 AI 代理的开发范式和应用场景。 这次我们重点分析企业 Agent 如何从传统的受控部署演进到软件工厂模式,以…

2026/7/26 23:57:51 阅读更多 →
每日安全情报报告 · 2026-07-26

每日安全情报报告 · 2026-07-26

每日安全情报报告 由 AI 整理发布 一、最新高危漏洞(近 48 小时) 1. CVE-2026-66012:SiYuan MCP 接口缺失授权,任意用户可接管管理员权限 风险等级:🔴 严重CVE 编号:CVE-2026-66012漏洞类型&a…

2026/7/26 23:57:51 阅读更多 →
每日极客日报 · 2026年07月26日

每日极客日报 · 2026年07月26日

每日极客日报 2026年07月26日 今日精选 22 条 IT 科技热点,覆盖 AI 大模型、开源项目、Agent 安全、芯片合作与工程实践等领域。 🔥 今日头条 Claude Opus 5 发布:半价逼近旗舰 Fable 5,高端模型价格战正式开打 Anthropic 正式…

2026/7/26 23:57:51 阅读更多 →
Claude API中转服务:解决国内开发者网络访问与支付难题

Claude API中转服务:解决国内开发者网络访问与支付难题

1. 先搞清楚为什么需要中转API,以及它到底解决什么实际问题如果你在国内调用Claude官方API时经常遇到"unable to connect to anthropic services"、"failed to connect to api.anthropic.com"这类错误,那这篇文章就是为你准备的。这…

2026/7/26 23:57:51 阅读更多 →
自然语言转SQL技术(NL2SQL)在电商数据中台的应用实践

自然语言转SQL技术(NL2SQL)在电商数据中台的应用实践

1. 项目背景与核心价值去年我在某电商平台负责数据中台建设时,经常收到业务部门的同类需求:"帮我查下上个月华东区女性用户的复购率"、"对比这两个季度的客单价变化趋势"。每天要处理几十个这样的SQL查询需求,占用了数据…

2026/7/26 23:57:51 阅读更多 →
供应链分销网络选址问题

供应链分销网络选址问题

供应链管理的战略与企业的竞争战略必须匹配,即竞争战略中满足顾客需求优先的目标与供应链管理战略旨在建立的供应链的能力目标之间相互协调一致。在新的竞争环境下,制造企业为了获取竞争优势,必须高效率、低成本地响应和满足顾客的需求。供应…

2026/7/26 23:56:51 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻