Java Array copyOf()
Die Methode Arrays.copyOf()
in Java ist eine Hilfsfunktion, die von der Klasse java.util.Arrays
bereitgestellt wird. Sie wird verwendet, um ein neues Array zu erstellen, indem der angegebene Bereich von Elementen aus einem bestehenden Array kopiert wird. Diese Methode ist nützlich, um die Größe von Arrays zu ändern, Arrays teilweise zu kopieren und Backups von Arrays zu erstellen.
Verwendung
Arrays.copyOf()
wird häufig verwendet, wenn du ein Array mit einer anderen Größe duplizieren musst oder wenn du nur einen Teil eines Arrays kopieren willst. Sie gibt ein neues Array zurück, das die kopierten Elemente enthält, und das ursprüngliche Array bleibt unverändert.
Syntax
public static <T> T[] copyOf(T[] original, int newLength)
original
: Das Array, aus dem Elemente kopiert werden sollen.newLength
: Die Länge des neuen Arrays. Wenn sie größer ist als die Länge des ursprünglichen Arrays, wird das neue Array mit Standardwerten aufgefüllt.
Beispiele
Beispiel 1: Kopieren eines ganzen Arrays
import java.util.Arrays;
public class CopyOfExample {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5};
int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
System.out.println("Original Array: " + Arrays.toString(originalArray));
System.out.println("Copied Array: " + Arrays.toString(copiedArray));
}
}
In diesem Beispiel wird Arrays.copyOf()
verwendet, um eine exakte Kopie von originalArray
zu erstellen. Das neue Array copiedArray
enthält alle Elemente aus dem ursprünglichen Array.
Beispiel 2: Kopieren mit größerem Format
import java.util.Arrays;
public class CopyOfLargerExample {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3};
int[] extendedArray = Arrays.copyOf(originalArray, 5);
System.out.println("Extended Array: " + Arrays.toString(extendedArray));
}
}
Hier wird Arrays.copyOf()
verwendet, um ein neues Array extendedArray
mit einer Länge von 5 zu erstellen. Die zusätzlichen Elemente werden mit dem Standardwert von 0
für den Typ int
initialisiert.
Beispiel 3: Kopieren mit kleinerem Format
import java.util.Arrays;
public class CopyOfSmallerExample {
public static void main(String[] args) {
String[] originalArray = {"Java", "Python", "C++", "JavaScript"};
String[] truncatedArray = Arrays.copyOf(originalArray, 2);
System.out.println("Truncated Array: " + Arrays.toString(truncatedArray));
}
}
In diesem Beispiel erstellt Arrays.copyOf()
ein neues Array truncatedArray
mit nur den ersten beiden Elementen von originalArray
.
Tipps und bewährte Praktiken
- Unveränderliches Original: Das ursprüngliche Array wird von
Arrays.copyOf()
nicht verändert, um die Datenintegrität zu gewährleisten. - Standardwerte: Wenn die neue Array-Länge größer ist als die ursprüngliche, werden die neuen Elemente auf Standardwerte gesetzt (
0
,null
,false
, etc.). - Array-Typen:
Arrays.copyOf()
arbeitet mit allen Primitiv- und Objekttypen und ist damit vielseitig für verschiedene Datentypen einsetzbar. - Leistung: Achte beim Kopieren großer Arrays auf die Leistung, da dabei ein neues Array erstellt und Elemente kopiert werden müssen.
Shallow und Deep Copy verstehen
Arrays.copyOf()
erzeugt eine oberflächliche Kopie, bei der Verweise auf die ursprünglichen Elemente kopiert werden und nicht die Objekte selbst. Das ist wichtig, wenn du mit komplexen Datenstrukturen wie 2D-Arrays oder Arrays von Objekten arbeitest, bei denen sich Änderungen an den Objekten im ursprünglichen Array im kopierten Array widerspiegeln können.
Ausnahmen
NegativeArraySizeException
: Wird ausgelöst, wenn der ParameternewLength
negativ ist.NullPointerException
: Wird ausgelöst, wenn das Arrayoriginal
null
ist.