一个小问题,但我找不到关于如何实现我正在尝试的东西的好解释。我正在尝试实现Dijkstra 算法。我需要使用PriorityQueue。
我想根据距离比较图的不同顶点。但是我真的不知道如何编写这样的比较方法,因为我从未使用过PriorityQueue
.
一个小问题,但我找不到关于如何实现我正在尝试的东西的好解释。我正在尝试实现Dijkstra 算法。我需要使用PriorityQueue。
我想根据距离比较图的不同顶点。但是我真的不知道如何编写这样的比较方法,因为我从未使用过PriorityQueue
.
优先级队列的全部意义在于它将最小的元素保持在顶部。您可以使用该函数检索此顶部元素,也可以使用该peek()
函数检索它并将其从队列中删除pop()
。
因此,对于 Dijkstra 算法,您应该将所有顶点放入队列中,然后在每一步弹出具有最小距离的顶点,然后更新与队列中相邻节点的距离。
至于 CompareTo 函数:
public class Example implements Comparable<Example> {
private String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
@Override
public int compareTo(Example o) {
return this.test.compareTo(o.test);
}
}