Maxheap vs priorityqueue混乱

时间:2016-07-21 04:09:54

标签: java heap priority-queue max-heap minmax-heap

假设我们想要根据值对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中实现比较器?这与堆有什么关系?

1 个答案:

答案 0 :(得分:2)

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