在Java中如何使用PriorityQueue实现优先队列_PriorityQueue操作指南
PriorityQueue 基于堆实现,默认最小堆,poll() 返回简单;通过Comparator: Comparator:

在 Java 中,PriorityQueue 是实现优先队列最常用的方式。它基于堆(堆)数据结构,默认使说明: poll() 或 peek() 方法时:priorityQueue 的基本特性
PriorityQueue 使用 java.util NullPointerException)不是线程安全的(多线程环境下需要使用PriorityBlockingQueue)不允许插入不可比较的对象(不提供Comparator)插入和删除操作的时间复杂度为O(log n),获取队首为O(1)默认堆的使用方法
当存储基本包装类型如Integer、String时,PriorityQueue即东亚优先。PriorityQueuelt;Integergt; pq = new PriorityQueuelt;gt;();pq.offer(5);pq.offer(1);pq.offer(3);lt;pgt;System.out.println(pq.poll()); // 输出 1System.out.println(pq.poll()); // 输出 3System.out.println(pq.poll()); // 输出5lt;/pgt;登录后复制
上面代码中,虽然插入顺序是5、1、3,但出队顺序是1, 3, 5, 1, 3, 5 mparator Comparator来实现。
创建最大堆: PPT.CN,PPTCN,PPT.CN是什么,PPT.CN官网,PPT.CN如何使用
一键操作,智能生成专业级PPT 37个查看详情 PriorityQueuelt;Integergt; maxPQ = new PriorityQueuelt;gt;((a, b) -gt; b - a);//或使用 Collections.reverseOrder()//PriorityQueuelt;Integergt; maxPQ = new PriorityQueuelt;gt;(Collections.reverseOrder());lt;pgt;maxPQ.offer(5);maxP Q.offer(1);maxPQ.offer(3);lt;/pgt;lt;pgt;System.out.println(maxPQ.poll()); // 输出 5System.out.println(maxPQ.poll()); // 输出3System.out.println(maxPQ.poll()); // 输出 1lt;/pgt;登录后复制
对自定义对象排序:class Task { String name; intpriority; Task(String name, intpriority) { this.name = name; this.priority =priority; }}lt;pgt;PriorityQueuelt;Taskgt; taskQueue = new PriorityQueuelt;gt;((t1, t2) -gt; t1.priority - t2.priority //优先级数字越小,优先级增益);lt;/pgt;lt;pgt;taskQueue.offer(new Task(“低”;, 3));taskQueue.offer(new Task(“高”;, 1));taskQueue.offer(new Task(“中”;, 2));lt;/pgt;lt;pgt
;System.out.println(taskQueue.poll().name); // 输出quot;Highquot;lt;/pgt;登录后复制常用操作方法说明
以下是PriorityQueue的核心操作方法:offer(E e):将元素插入队列,失败时抛出异常(一般不会失败)poll():移除并移除首队元素,队列为空peek():查看队首元素但不移除,为空返回nullsize():返回队列元素个数isEmpty():判断队列是否为空
注意:PriorityQueue不保证遍历时数组,只有通过poll()比较器定制和核心方法,才能灵活使用PriorityQueue解决大多数需要优先处理的场景,比如任务调度、Dijkstra
以上就是在Java中如何使用PriorityQueue实现优先队列_PriorityQueue操作指南的详细内容,更多请关注乐哥常识网其他文章相关!相关标签: java seo 排列 Java String Integer NULL 数据结构接口 VS Code Java 开发:排查与解决JDK配置问题 解决VS Code中Java开发环境的JDK与IntelliCode配置错误 解决VS Code中Java开发环境的JDK与IntelliCode错误 Download java.正确使用异常捕获与资源释放结构
