有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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,看到它的peekpollelement方法都只得到queue[0],但我不知道如何更新队列的顺序,因为内部方法heapifyprivate


共 (0) 个答案