【发布时间】:2013-10-04 19:46:42
【问题描述】:
我将以下代码用于PriorityQueue<Node<T>>,其中Node<T> 不是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 的source 并看到它的peek、poll 和element 方法都只是得到queue[0],但我不知道如何更新队列的顺序,因为内部方法heapify是private。
【问题讨论】:
标签: java data-structures priority-queue