2012-05-06 46 views
4

在JUNG 1.7.6中有爲此目的的函數copy()(myGraph.copy()),但是在JUNG 2.0中這個函數不再存在。我找不到任何其他可能性來創建圖形對象的副本。如果有人能幫助我,我會很高興。解決方法也很好。如何在JUNG 2.0框架中複製圖表?

非常感謝!

回答

0

您可以手動複製圖形,方法是遍歷所有頂點和所有邊並將它們添加到新圖中。見getVertices()位於API下方

+0

如果我有一個Graph 函數getVertices()返回一個集合與頂點。函數getEdges()返回帶有邊緣ID的集合,但我沒有得到由此邊連接的頂點......我發現查看通過特定邊連接哪些頂點的唯一方法是打印graph.toString()方法... – user1377963

7

代碼與仿製藥,所以你應該用String取代VEGraph<String, String>

Graph<V, E> src; 
    Graph<V, E> dest; 

    for (V v : src.getVertices()) 
     dest.addVertex(v); 

    for (E e : src.getEdges()) 
     dest.addEdge(e, src.getIncidentVertices(e)); 
+0

這基本上是正確的,但一個挑剔和一個增強:(1)你不應該用String替換V,E,而是用你的圖的類型(如果你創建了自己的靜態方法,你甚至不需要或想要這樣做)。 (2)如果你事先知道所有的頂點都有入射邊緣,並且你正在使用JUNG提供的Graph類,你可以省略第一個循環;如果它們不存在,addEdge將添加事件邊緣。 –

0

你可以做頂點的簡單複製&邊緣, 這將創建一個新的圖形,但裏面會通過引用傳遞的對象,所以你可以使用這個克隆庫https://code.google.com/p/cloning/

,並做了深拷貝:

Cloner cloner = new Cloner(); 
Graph<V, E> clonedGraph = cloner.deepClone(graph);