千家信息网

PriorityQueue优先级队列是什么意思

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"PriorityQueue优先级队列是什么意思",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PriorityQueue优先级队列是
千家信息网最后更新 2025年12月03日PriorityQueue优先级队列是什么意思

这篇文章主要讲解了"PriorityQueue优先级队列是什么意思",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PriorityQueue优先级队列是什么意思"吧!

JDK版本是1.8

特点

1.不能插入null对象

2.插入的对象支持排序。(可以自己传入比较器)

3.如果排序的结果一样的话,那么这两个的对象在队列中的位置是前后随机的

4.队列是无界的

5.线程不安全,如果安全请使用PriorityBlockingQueue

6.是一个完全二叉树来实现的最小二叉堆(非子节点的值,不大于其左右子节点),所以使用数组进行存储(父子节点的关系可以通过公式进行计算)。

主要的方法

1. add() 和 offer() 插入方法

两种方法没有什么本质的区别,add()只是把offer()方法包装一下。

 if (e == null)            throw new NullPointerException();        modCount++;        int i = size;        if (i >= queue.length)            grow(i + 1);//扩容        size = i + 1;        if (i == 0)            queue[0] = e;//队列为空的情况下,直接放入        else            siftUp(i, e); //调整节点(该方法是主要的方法),在位置i处插入e,和e的父节点比较,直到该节点大于或等于其父级或者是根。        return true;

2.peek()获取元素

获取队列头元素,但不会删除

(size == 0) ? null : (E) queue[0];

3.poll()获取元素

获取队列头元素,但会删除头元素,并且因为删除头元素,会调整队列的元素位置

 if (size == 0)            return null;        int s = --size; //队列大小减一        modCount++;        E result = (E) queue[0];//获取头元素        E x = (E) queue[s];//记录队列最后的元素        queue[s] = null;//删除队列最后的元素        if (s != 0)            siftDown(0, x);//调整整个队列的元素的位置,在位置0处插入项x,和x的叶子节点比较,直到它小于或等于其子项或者是叶子        return result;

应用

有关Top K 算法的解决方案(具体可以搜索相关的资料)

感谢各位的阅读,以上就是"PriorityQueue优先级队列是什么意思"的内容了,经过本文的学习后,相信大家对PriorityQueue优先级队列是什么意思这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

队列 元素 节点 方法 位置 优先级 意思 对象 学习 调整 安全 内容 叶子 情况 排序 最小 两个 公式 只是 可以通过 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全设备功能简介 数据库快照读和当前读 ea服务器分部 零基础可以学计算机网络技术吗 操作系统软件开发论文 中经网软件开发公司 软件开发者联盟如何开启应用 文明重启服务器管理 怎么查wifi网络安全密钥 无线网络技术导论第11章 摩尔庄园如何看自己是几号服务器 网络安全工作责任险 分期支付软件开发会计分录 条码机怎么连接数据库 网络安全方向公务员 江西浪潮服务器维修技术虚拟主机 数据库分为几个阶段举个例子 GaIe数据库是哪里的 贵州网络安全知识竞赛平台 数据库表及关系 页面注册连接数据库 网络安全运维的未来 98元能买什么服务器 数据库 持久层 石家庄软件开发先找驰宇网络 群众网络安全教育活动 宝山区互联网软件开发大概费用 中华人们共和国网络安全法 江西浪潮服务器维修技术虚拟主机 linux服务器内存池技术学习
0