在JUNG 1.7.6中有爲此目的的函數copy()(myGraph.copy()),但是在JUNG 2.0中這個函數不再存在。我找不到任何其他可能性來創建圖形對象的副本。如果有人能幫助我,我會很高興。解決方法也很好。如何在JUNG 2.0框架中複製圖表?
非常感謝!
在JUNG 1.7.6中有爲此目的的函數copy()(myGraph.copy()),但是在JUNG 2.0中這個函數不再存在。我找不到任何其他可能性來創建圖形對象的副本。如果有人能幫助我,我會很高興。解決方法也很好。如何在JUNG 2.0框架中複製圖表?
非常感謝!
您可以手動複製圖形,方法是遍歷所有頂點和所有邊並將它們添加到新圖中。見getVertices()位於API下方
代碼與仿製藥,所以你應該用String
取代V
和E
您Graph<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));
這基本上是正確的,但一個挑剔和一個增強:(1)你不應該用String替換V,E,而是用你的圖的類型(如果你創建了自己的靜態方法,你甚至不需要或想要這樣做)。 (2)如果你事先知道所有的頂點都有入射邊緣,並且你正在使用JUNG提供的Graph類,你可以省略第一個循環;如果它們不存在,addEdge將添加事件邊緣。 –
你可以做頂點的簡單複製&邊緣, 這將創建一個新的圖形,但裏面會通過引用傳遞的對象,所以你可以使用這個克隆庫https://code.google.com/p/cloning/
,並做了深拷貝:
Cloner cloner = new Cloner();
Graph<V, E> clonedGraph = cloner.deepClone(graph);
如果我有一個Graph函數getVertices()返回一個集合與頂點。函數getEdges()返回帶有邊緣ID的集合,但我沒有得到由此邊連接的頂點......我發現查看通過特定邊連接哪些頂點的唯一方法是打印graph.toString()方法... –
user1377963