PriorityQueue和compareTo方法

时间:2012-12-02 01:34:28

标签: java dijkstra

一个小问题,但我找不到如何实现我正在尝试的良好解释。我正在尝试实施Dijkstra's algorithm。我需要使用PriorityQueue

我想根据距离比较图表的不同顶点。 但我真的不知道如何编写这样的比较方法,因为我从未使用过PriorityQueue

2 个答案:

答案 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);
    }

}