一个小问题,但我找不到如何实现我正在尝试的良好解释。我正在尝试实施Dijkstra's algorithm。我需要使用PriorityQueue。
我想根据距离比较图表的不同顶点。
但我真的不知道如何编写这样的比较方法,因为我从未使用过PriorityQueue
。
答案 0 :(得分:0)
优先级队列的重点是它将最小元素保持在顶部。
您可以使用peek()
函数检索此顶部元素,或者检索它并使用pop()
函数将其从队列中删除。
因此,对于Dijkstra算法,您应该将所有顶点放入队列中,然后在每个步骤中弹出距离最小的那个,然后更新到队列中其邻居的距离。
答案 1 :(得分:0)
对于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);
}
}