优先队列(Java)

概念

优先队列(priority queue)中的元素可以按照任意顺序插入,但会按照有序的顺序检索。不过优先队列并没有对所有元素进行排序,所以迭代处理这些元素,并不需要对它们进行排序。优先队列里面的结构是堆---一个自组织的二叉树,其添加(add)和删除(remove)操作可以让最小元素移动到跟,而不必花时间对元素进行排序

应用场景

任务调度;每一个任务都有一个优先级,任务以随机顺序添加到队列中。每当启动一个新的任务时,都会将优先级最高的任务从队列中删除。

api

java.uti.PriorityQueue

java 复制代码
/**
 * 使用默认初始容量(11)创建一个{@code PriorityQueue},根据元素的{@linkplain Comparable 自然顺序}对其进行排序。
 */
public PriorityQueue() {
    this(DEFAULT_INITIAL_CAPACITY, null);
}

/**
 * 使用指定的初始容量创建一个{@code PriorityQueue},根据元素的{@linkplain Comparable 自然顺序}对其进行排序。
 *
 * @param initialCapacity 该优先队列的初始容量
 * @throws IllegalArgumentException 如果{@code initialCapacity}小于1
 */
public PriorityQueue(int initialCapacity) {
    this(initialCapacity, null);
}

/**
 * 使用默认初始容量创建一个{@code PriorityQueue},其中的元素根据指定的比较器进行排序。
 *
 * @param comparator 将用于对此优先队列进行排序的比较器。如果为{@code null},将使用元素的{@linkplain Comparable 自然顺序}。
 * @since 1.8
 */
public PriorityQueue(Comparator<? super E> comparator) {
    this(DEFAULT_INITIAL_CAPACITY, comparator);
}

具体调用比较器比较:

PriorityQueue<pair> pq = new PriorityQueue<>(Comparator.comparingInt(p->p.first));

相关推荐
用户962377954484 分钟前
原理分析 | 反序列化内存马 —— CC2 + Tomcat三种组件 + 无文件落地
后端
dEso RSET6 分钟前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
ROLL.77 分钟前
同步与异步
android·java
青槿吖7 分钟前
告别RestTemplate!Feign让微服务调用像点外卖一样简单
java·开发语言·分布式·spring cloud·微服务·云原生·架构
MacroZheng9 分钟前
横空出世!IDEA最强Spring插件来了,让你的开发效率成倍提升!
java·spring boot·后端
6Hzlia10 分钟前
【Hot 100 刷题计划】 LeetCode 155. 最小栈 | C++ 打包状态法 (最优雅的 O(1) 检索)
java·c++·leetcode
用户0953675158310 分钟前
Go :如何声明变量(var)与常量(const)
后端·go
2501_9130613410 分钟前
网络原理之HTTP(2)
java·网络协议
NEGl DRYN11 分钟前
Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
java·spring boot·logback
MeAT ITEM14 分钟前
net.sf.jsqlparser.statement.select.Select.getSelectBody()
java