Java-Arrays klonen

Farkhanda Athar 12 Oktober 2023
  1. Manuelles Kopieren von Java-Arrays mit der for-Schleife in Java
  2. Verwenden von Arrays.copyOf() zum Klonen eines Java-Arrays
  3. Verwenden von Arrays.copyOfRange() zum Klonen eines Java-Arrays
  4. Mit Object.clone() ein Java-Array klonen
  5. Mit System.arraycopy() ein Java-Array klonen
Java-Arrays klonen

Java-Arrays können auf folgende Weise in ein anderes Array kopiert werden.

  • Verwendung der Variablenzuweisung: Diese Technik hat ihre Nachteile, da sich jede Änderung an einem Array-Element an beiden Stellen widerspiegelt.
  • Erstellen Sie ein Array gleicher Größe und kopieren Sie jedes Element.
  • Nutzen Sie die Klontechnik für das Array. Klonmethoden erstellen ein brandneues Array mit einer ähnlichen Größe.
  • Nutzen Sie die Technik System.arraycopy(). arraycopy ist eine Methode, um einen bestimmten Teil aus einem Array zu kopieren.

Manuelles Kopieren von Java-Arrays mit der for-Schleife in Java

Normalerweise führen wir den Kopiervorgang in dem Moment, in dem wir Variablen wie a und b kopieren möchten, wie folgt aus:

public class Main {
  public static void main(String[] args) {
    int IArray[] = {24, 45, 56};

    System.out.println("Before assignment the values of IArray[] are:");
    for (int i = 0; i < IArray.length; i++) System.out.print(IArray[i] + " ");

    int CArray[] = new int[IArray.length];

    CArray = IArray;
    CArray[1]++;

    System.out.println("\nElements of IArray[]:");
    for (int i = 0; i < IArray.length; i++) System.out.print(IArray[i] + " ");

    System.out.println("\nElements of CArray[]:");
    for (int i = 0; i < CArray.length; i++) System.out.print(CArray[i] + " ");
  }
}

Ausgabe:

Before assignment the values of IArray[] are:
24 45 56 
Elements of IArray[]:
24 46 56 
Elements of CArray[]:
24 46 56 

Es ist nicht effektiv, wenn Sie dasselbe Verfahren auf Arrays anwenden.

Verwenden von Arrays.copyOf() zum Klonen eines Java-Arrays

Diese Methode namens Arrays.copyOf() ist hilfreich für die interne Verwendung der Prozedur System.arraycopy(). Obwohl es nicht so effektiv ist wie das Kopieren von Arrays, könnte es ein ganzes oder einen Teil von Arrays duplizieren, ähnlich wie die Array-Kopiermethode. Die Methode copyOf() Die Methode ist ein Element im Paket java.util und gehört zur Klasse Arrays. Die Grundidee dieser Methode ist:

public class Main {
  public static void main(String args[]) {
    int[] OArray = new int[] {11, 12, 13};

    System.out.println("Original Arrays elements are");
    for (int i = 0; i < OArray.length; i++) System.out.print(OArray[i] + " ");

    int[] CArray = Arrays.copyOf(OArray, 5);

    CArray[3] = 22;
    CArray[4] = 66;

    System.out.println("\nNew array after copying and modification are:");
    for (int i = 0; i < copy.length; i++) System.out.print(copy[i] + " ");
  }
}

Ausgabe:

Original Arrays elements are
11 12 13 
New array after copying and modification are
11 12 13 22 66 

Hier,

  • original: Das Array, das in das neu erstellte Array kopiert wird.
  • newLength: Länge des kopierten Arrays, das zurückgegeben wird.

Diese Methode erstellt also eine exakte Kopie des als erstes Argument bereitgestellten Arrays in der angegebenen Größe, indem die Länge aufgefüllt oder abgeschnitten wird, indem 0 hinzugefügt wird, um das neue Array zu erstellen. Dies bedeutet, dass, wenn die Größe des kopierten Arrays größer ist als die ursprüngliche Größe des Arrays, 0 durch die verbleibenden Elemente ersetzt werden.

Verwenden von Arrays.copyOfRange() zum Klonen eines Java-Arrays

Die Methode Arrays.copyOfRange() wurde speziell entwickelt, um Teile von Arrays zu kopieren. Ähnlich der Methode toCopyOf() verwendet die Methode die Technik System.arraycopy(). Die Grundidee der Prozedur Arrays.copyOfRange() lässt sich wie folgt beschreiben:

import java.util.Arrays;

class Main {
  public static void main(String args[]) {
    int IArray[] = {100, 200, 300, 400, 500};

    int[] CArray = Arrays.copyOfRange(IArray, 2, 6);
    System.out.println("Array within the index range : " + Arrays.toString(CArray));

    int[] CArray1 = Arrays.copyOfRange(IArray, 4, IArray.length + 3);

    System.out.println("Array copied within the indexed range: " + Arrays.toString(CArray1));
  }
}

Ausgabe:

Array within the index range : [300, 400, 500, 0]
Array copied within the indexed range: [500, 0, 0, 0]

Hier,

  • original: das Array eines Bereichs, der kopiert wird.
  • from: der Index für das zu kopierende Array inklusive.
  • to: der Index des zu kopierenden Bereichs und exklusiv.

Mit Object.clone() ein Java-Array klonen

Java-Arrays implementieren intern eine Cloneable-Schnittstelle, sodass es mühelos ist, Java-Arrays zu klonen. Es ist möglich, eindimensionale und zweidimensionale Arrays zu klonen. Wenn Sie ein eindimensionales Array kopieren, wird eine umfangreiche Replik der Array-Elemente erstellt, die die Werte kopiert.

Andererseits wird beim Kopieren von zweidimensionalen oder mehrdimensionalen Arrays eine kleine Kopie der Elemente erstellt, d. h. die einzigen Referenzinformationen werden kopiert. Dieser Klonierungsprozess wird mit der den Arrays angebotenen Methode clone() durchgeführt.

class Main {
  public static void main(String args[]) {
    int NArray[] = {50, 100, 150, 200, 250, 300};

    int CArray[] = NArray.clone();

    System.out.println("Original Num Array are:");
    for (int i = 0; i < NArray.length; i++) {
      System.out.print(NArray[i] + " ");
    }
    System.out.println();

    System.out.println("Cloned Num Array are:");
    for (int i = 0; i < CArray.length; i++) {
      System.out.print(CArray[i] + " ");
    }
    System.out.println("\n");

    System.out.print("NArray == CArray = ");
    System.out.println(NArray == CArray);
  }
}

Ausgabe:

Original Num Array are:
50 100 150 200 250 300 
Cloned Num Array are:
50 100 150 200 250 300 

NArray == CArray = false

Mit System.arraycopy() ein Java-Array klonen

Die Klasse System von Java bietet eine Option namens ArrayCopy, mit der Sie Elemente von einem Array in ein anderes kopieren können. Das gängigste Modell für diese Methode ist:

class Main {
  public static void main(String[] args) {
    // declaring a source array
    char[] Oarray = {'I', 'L', 'o', 'v', 'e', 'M', 'y', 'C', 'o', 'u', 'n', 't', 'r', 'y'};

    char[] Farray = new char[14];

    System.arraycopy(Oarray, 0, Farray, 0, 14);
    System.out.println("Origional Array Elements are:" + String.valueOf(Oarray));

    System.out.println("Arrays after copying elements are:" + String.valueOf(Farray));
  }
}

Ausgabe:

Origional Array Elements are:ILoveMyCountry
Arrays after copying elements are:ILoveMyCountry

Hier,

  • src_array: Quellarray, aus dem Elemente kopiert werden.
  • src_Pos: Die Position innerhalb des Quellarrays ist der Punkt, an dem das Kopieren beginnt.
  • dest_array: Das Array, in das sich das Ziel befindet, in das Elemente kopiert werden.
  • dest_Pos: Startposition im Zielarray der zu kopierenden Elemente.
  • length: Länge des zu kopierenden Arrays.

Verwandter Artikel - Java Array