gpt4 book ai didi

java - Maxheap 与 priorityqueue 混淆

转载 作者:行者123 更新时间:2023-11-30 08:34:59 25 4
gpt4 key购买 nike

假设我们要根据值对 HashMap 进行排序。我们实现了一个带有比较器的 priorityQueue 来做到这一点。因此,生成的 pq 从索引 0 到末尾从最大到最小排序。

代码如下:

PriorityQueue<Map.Entry<Integer, Integer>> pq = new PriorityQueue<Map.Entry<Integer, Integer>>(
new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});

但是,有人说它是最大堆,我明白堆只是父值大于子值,但我不明白为什么它是最大堆?它只是在 priorityQueue 中实现比较器?这与堆有什么关系?

最佳答案

java中优先级队列的内部结构是堆。
此比较器将用于与优先级队列中的父值进行比较。

关于java - Maxheap 与 priorityqueue 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38494734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com