Wie kopiert die Methode Arrays.copyOf() in Java ein Array in ein neues Array?
In Java ist Array eine sehr verbreitete Datenstruktur, und die Arrays-Klasse von Java bietet uns viele praktische Methoden für den Umgang mit Arrays. Unter diesen ist die Methode Arrays.copyOf() eine sehr nützliche Methode zum Kopieren eines Arrays in ein neues Array. In diesem Artikel werden die Verwendungs- und Implementierungsprinzipien dieser Methode vorgestellt und spezifische Codebeispiele bereitgestellt.
Verwendung
Die Methode Arrays.copyOf() hat zwei Parameter: das ursprüngliche Array und die Länge des neuen Arrays nach dem Kopieren. Diese Methode erstellt ein neues Array und kopiert die Elemente aus dem ursprünglichen Array in das neue Array. Wenn die Länge des ursprünglichen Arrays größer oder gleich der Länge des neuen Arrays ist, wird der vordere Teil des ursprünglichen Arrays kopiert. Wenn die Länge des ursprünglichen Arrays kleiner als die Länge des neuen Arrays ist, werden alle Elemente des ursprünglichen Arrays in das neue Array kopiert und die verbleibenden Elemente werden mit dem Standardwert des Array-Elementtyps gefüllt.
Das Folgende ist ein Beispiel für den Aufruf der Methode Arrays.copyOf():
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 3) ;
In diesem Beispiel erstellen wir ein ganzzahliges Array arr1 mit 5 Elementen. Wir rufen die Methode Arrays.copyOf() auf, um arr1 in ein anderes Array namens arr2 zu kopieren und die Länge von arr2 auf 3 zu setzen. Da die Länge des Arrays arr1 5 und die Länge von arr2 3 beträgt, kopiert die Methode Arrays.copyOf() nur die ersten 3 Elemente von arr1 nach arr2. Infolgedessen enthält arr2 jetzt {1, 2, 3}.
Dies ist nur das einfachste Beispiel für die Verwendung der Methode Arrays.copyOf(). Als Nächstes schauen wir uns einige komplexere Verwendungszwecke und Beispiele an.
Zweidimensionales Array kopieren
Die Methode Arrays.copyOf() eignet sich nicht nur für eindimensionale Arrays, sie kann auch zum Kopieren zweidimensionaler Arrays verwendet werden. Im folgenden Beispiel erstellen wir ein zweidimensionales Integer-Array mit dem Namen „matrix1“ und kopieren es mithilfe der Methode „Arrays.copyOf()“ in ein anderes Array mit dem Namen „matrix2“:
int[][] matrix1 = {{ 1, 2, 3}, {4, 5, 6}};
int[][] matrix2 = Arrays.copyOf(matrix1, 2);
In diesem Beispiel kopieren wir Matrix1 nach Matrix2 und die Länge von Matrix2 wird auf 2 gesetzt. Da „matrix1“ ein zweidimensionales Array ist und die Methode „Arrays.copyOf()“ nur ein eindimensionales Array kopieren kann, erstellen wir ein neues zweidimensionales Array mit einer Länge von 2 und sein erstes Element ist das erste Element der Zeile „matrix1“. , sein zweites Element ist die zweite Zeile von Matrix1. Auf diese Weise können wir ein 2D-Array in ein anderes Array kopieren.
Bestimmten Bereich des Arrays kopieren
In manchen Fällen möchten wir möglicherweise nur einen bestimmten Bereich von Elementen aus dem ursprünglichen Array kopieren. Die Methode Arrays.copyOfRange() ist eine sehr nützliche Methode, mit der wir angeben können, welcher Index im Originalarray mit dem Kopieren beginnen und bei welchem Index enden soll. Das Folgende ist ein Beispiel für die Methode Arrays.copyOfRange():
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 1, 4);
In diesem Beispiel erstellen wir ein Integer-Array namens arr1, das 5 Elemente enthält. Wir rufen die Methode Arrays.copyOfRange() auf und weisen sie arr2 zu. Wir übergeben arr1 als ersten Parameter an die Methode und 1 und 4 als zweiten und dritten Parameter. Das bedeutet, dass wir nur ab Index 1 von arr1 (d. h. zweites Element) bis Index 4 (d. h. fünftes Element) kopieren möchten, Index 4 nicht einschließen. Infolgedessen enthält arr2 jetzt {2, 3, 4}.
Da die Methode Arrays.copyOfRange() nur einen Teil des ursprünglichen Arrays kopiert, können wir auf diese Weise einen bestimmten Bereich von Elementen aus dem ursprünglichen Array kopieren.
Implementierungsprinzip
Die Methode Arrays.copyOf() ist eigentlich eine vereinfachte Implementierung der Methode System.arraycopy(). Die Methode System.arraycopy() ist eine der schnellsten Methoden in Java zum Kopieren von Elementen zwischen Arrays und bietet eine höhere Flexibilität und Leistung als die Methode Arrays.copyOf(). Darüber hinaus ist die Methode System.arraycopy() auch die grundlegende Implementierungsmethode der Methode Arrays.copyOf().
Das Folgende ist die Quellcode-Implementierung der Arrays.copyOf()-Methode:
public static
return (T[]) copyOf(original, newLength, original.getClass());
}
public static < T,U> ; T[] copyOf(U[] original, int newLength, Class erweitert T[]> newType) {
@SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy;
}
Wie aus der Code-Implementierung ersichtlich ist, die erste Zeile der Arrays .copyOf()-Methode Eine überladene Version der copyOf()-Methode wird aufgerufen und das von der Methode zurückgegebene Ergebnis wird an den Aufrufer zurückgegeben. Diese Methode akzeptiert ein ursprüngliches Array und die Länge des neuen Arrays als Parameter und übergibt sie an die zweite Methode copyOf().
Die zweite Methode copyOf() führt die folgenden Schritte aus, um ein neues Array zu erstellen und Elemente zu kopieren:
Da die Implementierung der Arrays.copyOf()-Methode auf der System.arraycopy()-Methode basiert, folgt sie den Regeln und Einschränkungen dieser Methode, z. B. dem Nichtkopieren von Arrays, die zwei verschiedene Typen umfassen.
Zusammenfassung
Die Methode Arrays.copyOf() ist eine praktische Möglichkeit, ein Array in Java zu kopieren. Sie kann schnell ein neues Array erstellen und die Elemente des ursprünglichen Arrays in das neue Array kopieren. Mit dieser Methode können ein- und zweidimensionale Arrays sowie ein bestimmter Bereich von Elementen kopiert werden. Die Implementierung der Arrays.copyOf()-Methode basiert auf der System.arraycopy()-Methode und unterliegt daher denselben Regeln und Einschränkungen. Beim Umgang mit Arrays ist die Arrays-Klasse ein sehr nützliches Werkzeug, das uns dabei helfen kann, Arrays einfacher zu handhaben und zu manipulieren.
Das obige ist der detaillierte Inhalt vonWie kopiert die Methode Arrays.copyOf() in Java ein Array in ein neues Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!