假设我们想要根据值对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();
}
});
然而,有人说这是一个maxheap,我知道堆只是父值大于子值但是我不明白为什么它是maxheap?它只是在priorityQueue中实现比较器?这与堆有什么关系?
答案 0 :(得分:2)
java中优先级队列的内部结构是堆
该比较器将用于与优先级队列中的父值进行比较。