Java: Kopiere Array eines nicht-primitiven Typs

8

Was ist der bevorzugte Weg, um ein Array eines nicht primitiven Typs in Java zu kopieren? Was ist mit Leistungsproblemen?

    
desolat 02.09.2009, 07:39
quelle

2 Antworten

7

Der alte Schulweg war:

%Vor%

Dies kopiert von einem vorhandenen Array zum anderen. Sie müssen das neue Array selbst zuweisen ... vorausgesetzt, Sie machen eine Kopie von ein Array.

Ab JDK 6 verfügt die Klasse java.util.Arrays über eine Reihe von copyOf -Methoden zum Erstellen von Kopien von Arrays mit einer neuen Größe. Die relevantesten sind:

%Vor%

und

%Vor%

Dieser erste erstellt eine Kopie mit dem ursprünglichen Array-Typ und der zweite erstellt eine Kopie mit einem anderen Array-Typ.

Beachten Sie, dass sowohl Arraycopy als auch das 3-Argument copyOf die Typen jedes Elements im ursprünglichen (Quell-) Array gegen den Zielarraytyp überprüfen müssen. So können beide Typausnahmen auslösen. Das 2-Argument copyOf muss (zumindest theoretisch) keine Typprüfung durchführen und sollte daher (theoretisch) schneller sein. In der Praxis wird die relative Leistung implementationsabhängig sein. Zum Beispiel wird arraycopy oft von der JVM speziell behandelt.

    
Stephen C 02.09.2009, 07:59
quelle
14
%Vor%

(wodurch Sie beliebige Teile eines Arrays über die Parameter offset und length kopieren können). Oder

%Vor%

Was in JDK 6 hinzugefügt wurde und ist eine generische Methode, so dass es verwendet werden kann:

%Vor%

Oder es kann einen Typ einschränken:

%Vor%

Beachten Sie, dass Sie auch die Methode clone für ein Array verwenden können:

%Vor%     
oxbow_lakes 02.09.2009 07:40
quelle

Tags und Links