【问题标题】:PriorityQueue and compareTo methodPriorityQueue 和 compareTo 方法
【发布时间】:2012-12-02 01:34:27
【问题描述】:

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

我想根据距离比较图的不同顶点。 但是我真的不知道怎么写这样的比较方法,因为我从来没有用过PriorityQueue

【问题讨论】:

  • 你检查文档了吗?
  • 是的,但我不知道如何进行比较。

标签: java dijkstra


【解决方案1】:

至于 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);
    }

}

【讨论】:

    【解决方案2】:

    优先级队列的重点在于它将最小的元素保持在顶部。 您可以使用peek() 函数检索此顶部元素,或使用pop() 函数检索它并将其从队列中删除。

    因此,对于 Dijkstra 算法,您应该将所有顶点放入队列中,然后在每一步弹出距离最小的顶点,然后更新与队列中相邻节点的距离。

    【讨论】:

    • 问题是当我将顶点放入队列时出现错误。我想这是因为它们没有可以比较的基础。
    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 2021-08-29
    • 2023-03-21
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多