2009-12-25 41 views
2

我必須創建一個自定義節點類型的圖,並且節點&連接是從一個txt文件逐個讀取的。JUNG - 如何獲得Graph中的確切頂點?

文件格式如下:startNode attibutes endNode。

每次我讀一行時,我創建了2個節點對象:startNode & endNode。並添加邊緣它們之間..

然而,的StartNode可能存在於若干行..

例如V1 ... V2; V1 ... V3

因此,我要檢查我的圖是否包含了節點之前我添加edges..and我應該用在圖新創建的節點,而不是頂點..

不榮有任何內置的方法來解決這個問題? 還是有什麼建議?

回答

1

JUNG認爲頂點(和邊)不同,只要它們被引用到不同的對象。如果您創建兩個具有相同屬性的頂點對象,它們將被視爲不同的頂點,您可以將它們都插入到圖形中。 JUNG沒有可以覆蓋的equals方法(檢查頂點對象的屬性)來檢查兩個頂點對象是否相同。因此,您需要手動維護圖形中的頂點(和邊)列表,以避免添加圖表中已有的頂點。然而,你可以用HashMap輕鬆做到這一點(如果你的圖形不是很大)。

+0

您不需要手動維護任何東西; addVertex()/ addEdge()合約保證。 –

2

簡短的回答是:根據合同,只要您的自定義節點/邊緣對象的0123,和hashCode()實現正確,那麼JUNG的圖形實現爲您負責。

如果您嘗試將頂點添加到一個圖表,它是在圖中已經存在,則addVertex()方法將返回false(意思是「一事無成」),就像在Set類似add()方法。

另請注意,addEdge()方法將爲您添加已連接的頂點,如果它們不存在。