Ho una classe grafico con Node, dove ogni nodo può connettersi ad altri:profonda copia una struttura grafico
public class Node {
List<Node> connections;
}
vorrei fare una copia completa del l'intero grafico. Come primo tentativo, ho provato a fare un costruttore di copia come:
public Node(Node other) {
connections = new ArrayList<Node>();
for (Node n : other.connections) {
connections.add(new Node(n));
}
}
Così profonda copia un grafico sarebbe solo:
public Graph deepCopy() {
Graph g = new Graph();
g.nodes = new ArrayList<Node>();
for (Node n : nodes) {
g.nodes.add(new Node(n));
}
}
Ma che non funziona come che distrugge il rapporto di connessione tra i i nodi. Mi chiedo se qualcuno ha suggerimenti per farlo in un modo semplice? Grazie.
Per coloro che non conoscono IdentityHashMap, controllare [documentazione] (http://docs.oracle.com/javase/7/docs/api/java/util/IdentityHashMap.html) – Swapnil
Questo funziona anche se il grafico ha cicli, giusto? –
@ GonçaloRibeiro: Sì, penso di si. L'ho scritto qualche tempo fa, quindi non ne sono assolutamente certo, ma penso che il fatto di mettere i nodi nella mappa degli isomorfismi prima di visitare le loro connessioni significa che i cicli sono gestiti correttamente. –