2017-10-14 4 views
-1

Meine Frage ist, wie Sie eine tiefe Kopie in Java machen. Im Moment ist das mein Code, aber ich denke nicht, dass das korrekt ist.So erstellen Sie eine tiefe Kopie in Java

Also weiß jemand, was ich in meinem Code ändern sollte, um eine tiefe Kopie zu erhalten, die korrekt ist?

+0

Fügen Sie bitte ein Beispiel [Minimal, vollständig und verifizierbar] (https://stackoverflow.com/help/mcve) hinzu. Da es Ihre erste Frage zu SO ist, lesen Sie [die Anleitung zum Stellen guter Fragen] (https://stackoverflow.com/help/how-to-ask). –

+0

Über die Objekte in Referenzen: Brauchen Sie sie, um geklont zu werden? – thanopi57

+0

Maybee konsultieren [Arrays.deepEquals (...)] (https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html#deepEquals-java.lang.Object:A- java.lang.Object: A-) Methode? – thanopi57

Antwort

0

Der folgende Code kopiert eine Liste, die andere Listen als referenzierte Objekte enthalten:

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class Main { 
    public static void main(final String[] args) { 
     final ArrayList list = new ArrayList(); 
     list.add(Arrays.asList("A", "B", "C")); 
     list.add("D"); 
     System.out.println(list); 
     final ArrayList out = new ArrayList(); 
     deepCopy(out, list); 
     System.out.println(out); 
    } 

    public static void deepCopy(final List out, 
           final List in) { 
     for (Object o: in) 
      if (o instanceof List) { 
       final ArrayList copy = new ArrayList(); 
       deepCopy(copy, (List)o); 
       out.add(copy); 
      } 
      else 
       out.add(o); 
    } 
} 

Edit:
Wenn Sie die referenzierte Objekte wollen geklont werden, müssen Sie Zugriff auf das clone Verfahren haben, die referenzierten Objekte.

+0

Danke und ja, ich muss die ganze Liste geklont bekommen. –

+0

Benötigen Sie die referenzierten Objekte, die geklont werden sollen? Wenn ja, benötigen Sie generische oder spezifische Referenzen? Denn wenn Sie generisch sind, müssen Sie Zugriff auf die Klon-Methode haben. – thanopi57

+0

Ich brauche eine generische Referenz und ich habe gerade herausgefunden, dass ich die Klonmethode in meinem Programm vergessen habe –

Verwandte Themen