我有一个有向图,其边为Map<E,Pair<V>>
,顶点为<V>
。
我想拥有该图的副本,并在原始图不变的情况下在副本中进行一些更改。
我写了两个不同的复制函数,copy1和copy2。第二个函数工作正常,但是,在 copy1 中,如果我从复制图中删除一个顶点,它也会从原始图中删除。你能告诉我copy1有什么问题吗?我怎样才能快速复制我的图表?
public Graph<V> copy1() {
Graph<V> g = new Graph<V>();
g.vertices.putAll(super.vertices);
g.edges.putAll(super.edges);
return g;
}
public static void copy2(IGraph<E> graph, IGraph<E> copy) {
assert (copy.getVertexCount() == 0);
for (E resource : graph.getVertices()) {
copy.addVertex(resource);
}
for (Edge edge : graph.getEdges()) {
Pair<E> endpoints = graph.getEndpoints(edge);
copy.addEdge(edge, endpoints);
}
}