A Guide to PriorityQueue
原文链接:https://blog.csdn.net/ohwang/article/details/116934308
PriorityQueue 又叫 优先队列
注意1:
PriorityQueue是用数组实现,数组大小可以动态增加,容量无限。
优先队列采用的是堆排序(默认为最小堆)。堆排序只能保证根是最大(最小),整个堆并不是有序的。
注意2:
非线程安全。线程安全可以用PriorityBlockingQueue。
注意3:
不允许使用 null 元素。
注意4:
offer()、poll()、remove() 、add() 时间复杂度为O(log(n)) 。
remove(Object) 和 contains(Object) 时间复杂度为O(n)。
peek、element 、size 时间复杂度为O(常量)。
注意5:
方法iterator()中提供的迭代器并不保证以有序的方式遍历优先级队列中的元素。
如果需要按顺序遍历,可用Arrays.sort(pq.toArray())。
注意6: 可以在构造函数中指定如何排序。
# 默认的初始容量(11)
PriorityQueue(int initialCapacity)
# 使用指定的初始容量创建一个 PriorityQueue,并根据其自然顺序来排序其元素。PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
# 使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器comparator来排序其元素。
注意7: 此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选 方法。
# 默认升序
PriorityQueue<Integer> queue2 = new PriorityQueue<>(10);
queue2.offer(11);
queue2.offer(9);
int len = queue2.size();
for (int i = 0; i < len; i++) {System.out.println(queue2.poll());
}
//输出 9 11# 自定义降序
PriorityQueue<Integer> queue = new PriorityQueue<>(10, (a, b) -> b - a);
queue.offer(13);
queue.offer(9);
int len1 = queue.size();
for (int i = 0; i < len1; i++) {System.out.println(queue.poll());
}
//输出 13 9
# 模拟业务使用
PriorityQueue<People> queue = new PriorityQueue<>(11, (p1, p2) -> p2.age - p1.age);
for (int i = 1; i <= 10; i++) {queue.add(new People("张" + i, (new Random().nextInt(100))));
}
while (!queue.isEmpty()) {System.out.println(queue.poll().toString());
}class People {String name;int age;public People(String name, int age) {this.name = name;this.age = age;}public String toString() {return "姓名:" + name + " 年龄:" + age;}
}姓名:张9 年龄:67
姓名:张1 年龄:66
姓名:张8 年龄:65
姓名:张7 年龄:54
姓名:张4 年龄:48
姓名:张2 年龄:41
姓名:张5 年龄:39
姓名:张3 年龄:26
姓名:张6 年龄:11
姓名:张10 年龄:0
相关文章:
A Guide to PriorityQueue
原文链接:https://blog.csdn.net/ohwang/article/details/116934308 PriorityQueue 又叫 优先队列 注意1: PriorityQueue是用数组实现,数组大小可以动态增加,容量无限。 优先队列采用的是堆排序(默认为最小堆ÿ…...
Jenkins教程—构建多分支流水线项目
本教程向你展示如何使用Jenkins协调一个用 Node Package Manager (npm) 管理的简单 Node.js 和 React 项目, 并同时 为开发和产品环境交付不同的结果。 在开始本教程之前,建议你前往 教程概览 页面,并至少完成一个 介绍教程, 从而…...
【vxe-table】@enter.keyup.native实现在列表中回车光标向右移动聚焦及vxe-table的一些方法的使用(具体实现+踩坑篇)
需求: vxe-table表格 1、新增的时候,vxe-table第一行的第一个输入框聚焦 2、输入完成后,按回车,自动跳到同一行的下一个输入框 3、当在同一行的最后一个输入框输入完成后,按回车跳回第一个输入框并选中状态且复选框为选…...
科技资讯|苹果Vision Pro获得被动冷却系统及数字表冠控制界面专利
据patentlyapple报道,美国专利商标局正式授予苹果一项与头戴式设备(Apple Vision Pro)相关的专利11751366,该设备可以提供被动冷却系统,利用光学组件的表面来管理热量,而不会对用户显示的视觉信息产生不利影…...
【悬溺】Flyway的纯爱时刻
文章目录 文档背景你好Demo地址Flyway的CPU时刻(工作流程)她在哪Flyway的使用流程官方文档 文档背景 由于维护项目的哥们们技术水平参差不齐,长短不一。故做此篇文章。多点纯爱,这个世界需要纯爱战士! 你好 Flyway是一款开源的数据…...
Linux权限介绍
引言 Linux中有两种用户:超级用户(root)、普通用户 超级用户:在Linux中能做任何事,不受到权限的限制普通用户:会受到权限的限制超级用户的命令提示符是#,普通用户的命令提示符是$ 命令ÿ…...
git:一个本地仓库绑定多个远程的方法以及遇到的问题
绑定方法见知乎大佬:本地Git仓库关联多个远程仓库的两种方法 一般情况下,没人这么搞! 但是公司迁移git仓库阶段,xx云环境上的gitlab要有操作记录,不然影响整体评分,这就不得一个本地仓库关联了原来的仓库新…...
如何将WPS设置为默认的办公软件
很多小伙伴的电脑中有好几种办公软件,每次打开文档表格都要进行选择,有小伙伴想要将WPS设置成默认的办公软件该怎么操作呢,下面小编就给大家详细介绍一下将WPS设置为默认的办公软件的方法,有需要的小伙伴快来和小编一起看一看吧。…...
css 文本溢出隐藏,显示省略号
单行隐藏 overflow:hidden; //超出的文本隐藏text-overflow:ellipsis; //溢出用省略号显示white-space:nowrap; //溢出不换行多行隐藏 overflow:hidden; text-overflow:ellipsis; display:-webkit-box; //将对象作为弹性伸缩盒子模型显示。 -webkit-box-orient:vertical; //从…...
构建普适通用的企业网络安全体系框架
在当今数字化时代,网络安全已成为企业保护信息资产和业务运行的重要任务。恶意攻击、数据泄露、网络病毒等威胁不断演进,给企业和个人带来了巨大风险。为了应对这一挑战,许多企业已经采取了一系列网络安全措施,如制定了网络安全政…...
TinTin Web3 动态精选:以太坊基金会推出 EELS、Arbitrum Stylus 上线
TinTin 快讯由 TinTinLand 开发者技术社区打造,旨在为开发者提供最新的 Web3 新闻、市场时讯和技术更新。TinTin 快讯将以周为单位, 汇集当周内的行业热点并以快讯的形式排列成文。掌握一手的技术资讯和市场动态,将有助于 TinTinLand 社区的开…...
软考高级架构师下篇-14面向服务架构设计理论
目录 1. 引言2. SOA的相关概念3. SOA的发展历史4. SOA的参考架构5. SOA 主要协议和规范6. SOA设计的标准要求7. SOA的作用与设计原则8. SOA的设计模式9. SOA构建与实施10. 前文回顾1. 引言 在面向服务的体系结构(Service-Oriented Architecture,SOA)中,服务的概念有了延伸…...
HTTP 和 HTTPS
一.HTTP HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本(Hypertext)和其他资源的应用层协议。HTTP是Web中最常用的协议之一,它使得浏览器可以请求和显示网页,也允许服务器传送网页内容和其…...
linux使用stress命令进行压力测试cpu
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
创建vue3项目并引用elementui
1.创建vu3项目: vue3官网:简介 | Vue.js 执行命令 npm create vuelatest 2.终端会出现如下选项,不确定的直接enter键进入下一步; 3.然后再执行下方命令: cd <your-project-name> npm install4.安装依赖成功…...
《C++ Primer》第2章 变量(二)
参考资料: 《C Primer》第5版《C Primer 习题集》第5版 2.4 const限定符(P53) 由于 const 对象在创建后不能修改,所以其必须初始化。 const 对象的常量特征仅在执行改变该变量的操作时才会发生作用。 const 对象默认仅在文件…...
Vue3统一导出局部组件和全局组件
局部组件统一导出 components新增ComponentA.vue、ComponentB.vue两个组件 新增index.js进行组件统一导入 import ComponentA from ./ComponentA.vue import ComponentB from ./ComponentB.vueexport {ComponentA,ComponentB }使用 <template><ComponentA /><…...
【笔试强训选择题】Day36.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言一、Day…...
【软考】系统架构设计师 - 知识扩展 - “区块链技术“
目录 一 简介👑 1 比特币❤️ 2 区块链的特点❤️ 3 共识算法❤️ 二 练习题👑 三 扩展👑 1 哈希算法❤️ 2 哈希指针❤️ 3 UTXO❤️ 4 参考资料❤️ 一 简介👑 1 比特币❤️ 比特币底层采用了区块链技术。 比特币交易…...
Pytorch 分布式训练(DP/DDP)
概念 PyTorch是非常流行的深度学习框架,它在主流框架中对于灵活性和易用性的平衡最好。 分布式训练根据并行策略的不同,可以分为模型并行和数据并行。 模型并行 模型并行主要应用于模型相比显存来说更大,一块 GPU 无法加载的场景…...
AI在测试中的应用:从测试用例生成到缺陷预测
随着软件开发流程向敏捷与DevOps的持续演进,软件测试面临着迭代周期缩短、系统复杂度飙升的双重压力。传统的测试方法,高度依赖人工经验与重复劳动,在效率、覆盖率和预测性上逐渐显现瓶颈。人工智能技术的引入,正从辅助工具演变为…...
OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建
OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建 1. 为什么我们需要共享技能库 去年冬天,我们团队在尝试用OpenClaw自动化周报生成时遇到了一个典型问题——每个人都在重复造轮子。小王写了个飞书日程抓取脚本,小李开发了Git提交记录…...
【仅限首批认证用户开放】Polars 2.0企业清洗最佳实践白皮书(含GDPR脱敏DSL语法速查表)
第一章:Polars 2.0企业级数据清洗能力全景概览Polars 2.0 将数据清洗从“脚本式修补”推向“工程化流水线”,依托零拷贝内存模型、并行执行引擎与声明式 API,原生支持高吞吐、低延迟、强一致性的清洗任务。其核心能力不再依赖 Pandas 风格的链…...
FastAPI 2.0 + LLM流式输出全栈方案,含OpenAI兼容层、前端SSE重连策略、服务端背压控制(仅限内部技术白皮书级实录)
第一章:FastAPI 2.0 异步 AI 流式响应教程概览FastAPI 2.0 原生强化了对异步流式响应(StreamingResponse)的支持,为构建低延迟、高吞吐的 AI 接口(如大语言模型推理、语音合成、实时图像生成)提供了坚实基础…...
数字记忆自主化:GetQzonehistory技术架构与数据保护实践指南
数字记忆自主化:GetQzonehistory技术架构与数据保护实践指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、技术演进视角下的数据脆弱性危机 数字存储技术的迭代速度与…...
效率提升秘籍:利用快马AI生成自动化脚本高效管理50台云桌面
效率提升秘籍:利用快马AI生成自动化脚本高效管理50台云桌面 手动配置和管理大量云桌面效率低下,尤其是当需要同时管理50台甚至更多云桌面时,重复性的操作不仅耗时耗力,还容易出错。最近我在InsCode(快马)平台上尝试了一个自动化运…...
机器学习在医疗诊断中的应用
机器学习在医疗诊断中的应用 【免费下载链接】Zettlr Your One-Stop Publication Workbench 项目地址: https://gitcode.com/GitHub_Trending/ze/Zettlr 背景 [[医疗诊断现状分析]]显示当前诊断方法的局限性。 方法 基于[[机器学习基础概念]]中的监督学习方法。 应用…...
大麦抢票自动化工具:技术赋能下的抢票效率革命
大麦抢票自动化工具:技术赋能下的抢票效率革命 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在热门演出门票抢购场景中,用户常常面临手动操作反应迟缓、重复劳动效率低下…...
Phi-4-mini-reasoning开源模型优势:轻量级+高精度+低GPU资源占用实测
Phi-4-mini-reasoning开源模型优势:轻量级高精度低GPU资源占用实测 1. 模型概述 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理数学题、逻辑题、多步分析和简洁结论输出。与通用聊天模型不同,它采用了"题目输…...
Laya3D美术进阶:巧用Shader实现APP级游戏效果还原
1. 为什么选择Laya3D的Shader技术? 很多开发者第一次接触Laya3D时,都会有个疑问:为什么不用Unity直接开发?特别是在微信小游戏这个特定场景下,Laya3D的Shader技术到底能带来什么优势?我做了三年Laya小游戏…...
