2012-04-16 116 views
11

我想創建一個程序來創建一個圖形(具體爲程序圖形),該圖形存儲節點上的值,並存儲每個單獨節點連接到的其他節點。在java中創建圖表

我想這樣做使用鏈表。這是否正確?任何其他意見將不勝感激。

回答

21

大多數情況下,使用鄰接列表爲您的圖形建模是一個不錯的主意。有可能現有的框架來做到這一點,但如果你對錶示作爲練習感興趣,你通常需要兩件事情。首先,包含所有節點的HashMap,節點的節點標籤可以是關鍵,節點本身就是值。

Java API文檔HashMaps here

在每個節點對象中,都需要一個與該節點相鄰的節點列表。這最好通過一個ArrayList完成,該文件記錄在here中。

下面是它的組織方式。

import java.util.Hashmap; 
import java.util.ArrayList; 

class Node { 
    String label; 
    ArrayList<Node> adjacencyList; 
} 

HashMap<String, Node> graph = new HashMap<String, Node>(); 

你想在圖上運行的大多數算法在這種表示上運行良好。

+0

我會試試這個,非常感謝。 – user1079226 2012-04-16 19:52:49

0

你可以編寫自己的圖形對象或使用類似Jung的東西。

1

你在找什麼似乎是TreeNode API。 實際上,在swing SE中已經存在一個很好的swing包,默認實現是:javax.swing.tree.DefaultMutableTreeNode。 它可以在Swing應用程序之外使用,並提供非常標準的TreeNode模型。

你會發現每一件事情,以滿足您的需求:的getChildren(),的getParent(),setUserObject()...等,並進行抓取和搜索在節點樹中的每個遞歸方法。

好消息是,您將獲得在幾分鐘內編寫JTree UI的能力!