2

値に基づいてハッシュマップをソートしたいとします。これを行うには、コンパレータを使用して 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に実装しているだけですか?これはヒープとどのように関係していますか?

4

1 に答える 1

2

Java のプライオリティ キューの内部構造はヒープです。
このコンパレータは、優先度キューの親の値と比較するために使用されます。

于 2016-07-21T04:18:08.260 に答える