2012-10-25 99 views
0

名單,我想建立一個映射算法,並做以下的事情:一兩個變量

首先,創建地圖上的所有點。

已經給這些點被連接,並且它們之間的長度(作爲整數)。

現在的問題是要找到它們之間的最短連接。

所以我會做什麼是創建一個包含所有這個特殊的點連接到一個點的列表,並從原來的點對點長度的每個點的對象。

一個例子是:

從A到G的存在的7

從A到C存在的3

的距離當A被連接到c和A是距離連接到g

我的問題是,如果我使用HashMap我有一些問題,找出點是否連接,因爲HashMap不容易循環通過是否有一個更簡單的方法來做到這一點或是否有替代HashMap類?

+2

聞起來像LinkedHashMap的,呵呵? – Juvanis

回答

3

Prim's AlgorithmDijkstra's algorithmMinimum Spanning Tree

如果你有一組頂點(在你的情況下一個點),以及它們之間的路徑的權重(在你的情況下距離)的MST僅給出其連接的路徑所有頂點並具有最小距離的總和。

Prim算法和Dijkstra算法可以用來找到MST。

+0

這正是我想做的事情,但我還在尋找一個列表,包含我的頂點 –

+0

你只需要一個N * N的距離矩陣(n是點的數量)的數量和名稱,其具有點之間的距離。你可以製作另一個大小爲n的數組來存儲你的點的名字。 – Max

0

既然你問過一個HashMap循環:你應該使用迭代器爲你做它:

HashMap hmap = new HashMap(); 
hmap.put("a", "hello world!"); 
hmap.put("b", "goodbye!"); 
hmap.put("c", 42); 
Set s = hmap.entrySet(); 
Iterator i = s.iterator(); 
while (i.hasNext()) { 
    System.out.println(i.next()); 
} 
+0

我真的很高興大家的反應,但它的問題,我想解決我的自我,所以hashmap是用於此目的的最佳名單? –

+0

我會推薦學習圖形算法,但如果你想首先使用你自己的方法來解決它,HashMap將會很好。 –