一個小問題,但我無法找到一個關於如何實現我所嘗試的很好的解釋。我正在嘗試執行Dijkstra's algorithm。我需要使用PriorityQueue。PriorityQueue和compareTo方法
我想根據它們的距離來比較圖形的不同頂點。 但我真的不知道如何編寫這樣的比較方法,因爲我從來沒有使用過PriorityQueue
。
一個小問題,但我無法找到一個關於如何實現我所嘗試的很好的解釋。我正在嘗試執行Dijkstra's algorithm。我需要使用PriorityQueue。PriorityQueue和compareTo方法
我想根據它們的距離來比較圖形的不同頂點。 但我真的不知道如何編寫這樣的比較方法,因爲我從來沒有使用過PriorityQueue
。
爲的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);
}
}
優先級隊列的整點在於它將最小的元素保留在頂部。 您可以使用peek()
函數檢索此頂層元素,或者使用pop()
函數將其從隊列中刪除。
因此,對於Dijkstra算法,您應該將所有頂點放入隊列中,然後在每個步驟中彈出距離最近的一個,然後更新到隊列中鄰居的距離。
問題是我將頂點放入隊列時出現錯誤。我想這是因爲他們沒有可以比較的基礎。 – zanzoken
你檢查的文件? – SLaks
是的,但我沒有得到如何做比較。 – zanzoken