java如何触发优先队列的重定位?
我将以下代码用于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(...)
修改了地图中节点的距离。如何确保优先级队列正确更新以反映新的排序顺序
我查看了sourcefor PriorityQueue
,看到它的peek
、poll
和element
方法都只得到queue[0]
,但我不知道如何更新队列的顺序,因为内部方法heapify
是private
共 (0) 个答案