2012-12-02 43 views
0

一個小問題,但我無法找到一個關於如何實現我所嘗試的很好的解釋。我正在嘗試執行Dijkstra's algorithm。我需要使用PriorityQueuePriorityQueue和compareTo方法

我想根據它們的距離來比較圖形的不同頂點。 但我真的不知道如何編寫這樣的比較方法,因爲我從來沒有使用過PriorityQueue

+1

你檢查的文件? – SLaks

+0

是的,但我沒有得到如何做比較。 – zanzoken

回答

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

} 
0

優先級隊列的整點在於它將最小的元素保留在頂部。 您可以使用peek()函數檢索此頂層元素,或者使用pop()函數將其從隊列中刪除。

因此,對於Dijkstra算法,您應該將所有頂點放入隊列中,然後在每個步驟中彈出距離最近的一個,然後更新到隊列中鄰居的距離。

+0

問題是我將頂點放入隊列時出現錯誤。我想這是因爲他們沒有可以比較的基礎。 – zanzoken