我正在研究此链接中给出的 Dijkstra 算法代码-> https://java2blog.com/dijkstra-java/
有人可以解释代码的以下两部分吗?
1)当计算距离较小时,为什么我们在优先队列中添加和删除元素?
if( newDistance < v.getDistance() ) {
priorityQueue.remove(v);
v.setDistance(newDistance);
v.setPredecessor(actualVertex);
priorityQueue.add(v);
}
2) 我们在 compareTo 方法中做了什么,为什么?
@Override
public int compareTo(Vertex otherVertex) {
return Double.compare(this.distance, otherVertex.getDistance());
}