2010-11-19 32 views
0
public static void Dijk(HashMap<String, HashMap<String, Integer>> map, String go, String stop){ 
    PriorityQueue pq = new PriorityQueue(); 
    for (String x: map){ 

    } 

    } 

爲什麼編譯器告訴我我不能在這裏使用foreach循環?Foreach對HashMaps無效?和一般優先級隊列問題

此外,這是一個較大的程序的一個較小的部分,但我沒有太多的優先級隊列的經驗,我想用它來舉行<String, int> //or Integer我做對了嗎? (本質上使用PQ作爲二元堆)(此方法將實現Dijkstra算法)

感謝您提前給予幫助/解答!

回答

0

假定你打算遍歷HashMap的鍵,你應該嘗試

for (String x: map.keySet()){ 

} 

而對於優先級隊列,看看Java的集合PriorityQueue

+0

對不起這是一個非常漫長的一天,但是,我不確定我的頭在哪裏,謝謝!我主要關心的是獲取鑰匙。同樣優先級隊列的設置是否會在我添加它時使用(String,Integers)?我試圖像你會映射它,但它不會編譯。 – 2010-11-19 22:59:18

+0

你能提供一個代碼示例/更清楚地解釋你想做什麼嗎? – 2010-11-19 23:01:56

+0

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm 如果你看看僞代碼部分,你會看到我基本上想要做的事情。總體目標是找到通過詞梯的最短路徑。主地圖包含字典,每個元素的子地圖都有鄰居和它們距鍵的距離。然後Dijkstra需要逐個移動它們,找到最短路徑將起始詞更改爲目標。我知道如何解決這個問題,但我相信我只想知道PQ的語法(String,int) – 2010-11-19 23:03:54