4

私は次のコードを aPriorityQueue<Node<T>>に使用しています。ここで、Node<T>is not Comparable:

final Map<Node<T>, Double> distances = new HashMap<>();

PriorityQueue<Node<T>> queue = new PriorityQueue<Node<T>>(graph
        .getNodes().size(), new Comparator<Node<T>>() {
    @Override
    public int compare(Node<T> o1, Node<T> o2) {
        return distances.get(o1).compareTo(distances.get(o2));
    }
});

コードの後半で、マップ内のノードの距離を で変更しdistances.put(...)ます。プライオリティ キューが正しく更新され、新しい並べ替え順序が反映されるようにするにはどうすればよいですか?

ソースPriorityQueue見て、そのpeekpoll、およびelementメソッドがすべて を取得していることがわかりますが、内部メソッドがqueue[0]であるため、キューの順序を更新する方法がわかりません。heapifyprivate

4

2 に答える 2