Java: Wie erstellt man eine Kopie eines Objektarrays?

8

Im Moment habe ich ein Array von Point-Objekten und möchte ein COPY dieses Arrays erstellen.

Ich habe folgende Möglichkeiten versucht:

1) Point[] temp = mypointarray;

2) Point[] temp = (Point[]) mypointarray.clone();

3)

%Vor%

Aber alle diese Arten stellen sich heraus, dass nur eine Referenz von mypointarray für temp, nicht für eine Kopie erstellt wird.

Wenn ich zum Beispiel die x-Koordinate von mypointarray [0] auf 1 änderte (der ursprüngliche Wert ist 0), wird die x-Koordinate von temp [0] ebenfalls auf 1 geändert (ich schwöre, ich habe temp nicht berührt) .

Gibt es also Möglichkeiten, eine Kopie des Point-Arrays zu erstellen?

Danke

    
kevin 20.11.2011, 06:43
quelle

3 Antworten

12

Sie müssen eine tiefe Kopie erstellen. Es gibt kein integriertes Dienstprogramm dafür, aber es ist einfach genug. Wenn Point einen Kopierkonstruktor hat, können Sie das folgendermaßen machen:

%Vor%

Dies ermöglicht null Array-Elemente.

Mit Java 8 können Sie dies kompakter mit Streams tun:

%Vor%

Und wenn Sie sicher sind, dass kein Element von mypointarray ist null , kann es noch kompakter sein, weil Sie den null test eliminieren und Point::new verwenden können, anstatt Ihr eigenes Lambda für% co_de zu schreiben %:

%Vor%     
Ted Hopp 20.11.2011, 07:11
quelle
0

Sie müssen Kopien aller Point-Instanzen selbst erstellen ...

Solange Ihre Punktklasse serialisierbar ist, können Sie dieses Array serialisieren + deserialisieren, um eine schnelle, tiefe Kopie zu erhalten

    
DarkSquirrel42 20.11.2011 06:47
quelle
-2

Sie können die Dienstprogrammklasse Arrays verwenden:

%Vor%     
Finbarr 20.11.2011 06:47
quelle

Tags und Links