Java >> Java tutorial >  >> Java

Java Copy Array | Eksempler på Java Array Clone

Her er situationen, du har en Array, og du vil have en anden kopi af den til at manipulere dataene i den. Så for at gøre det skal du have en kopi af arrayet. I dette selvstudie lærer du "Hvordan Java Copy Array ” eksempel program.

Før start skal læses – Array Initialization | Typer med eksempler Tutorial

Lad os starte Array-kopiering i Java

  • Gentagelse - Nemt og korrekt
  • Brug af Clone()
  • Brug af System.arraycopy()
  • Reference af et array (simpelt, men forkert)

Eksempler på Java Copy Array

Lad os se et bye et eksempel på, hvordan man kopierer et array med forskellige metoder.

Gentagelse – let

En lavende iteration er en nem måde at kopiere et array i Java. Hvert element kopieres ad gangen.

Her er eksemplet brugt en Java for loop til en iteration. Vi kontrollerer, om begge Array-referencen er den samme eller ej. Det vil ikke det samme, fordi copyArray er anderledes hukommelsesallokering og ændre værdien af ​​det afspejler ikke originale arrays.

public class CopyArrayExample {

    public static void main(String[] args) {
        int array[] = {9, 0, 3};

        // Create an copyArray, same length of Original array
        int copyArray[] = new int[array.length];

        // Copy elements of Array
        for (int i = 0; i < array.length; i++)
            copyArray[i] = array[i];

        System.out.println("Original Array ");
        for (int i = 0; i < array.length; i++)
            System.out.print(array[i] + " ");

        System.out.println("\nCopy of Array ");
        for (int i = 0; i < copyArray.length; i++)
            System.out.print(copyArray[i] + " ");

        //checking is both same
        System.out.println("\nIs same : " + (array == copyArray));
    }
}

Output: Original Array
9 0 3
Kopi af Array
9 0 3
Er det samme:falsk

Brug af Clone()

Så mange loop-iterationer på et øverste eksempel? Her er java kan gøre det meget bedre med clone() metoden . Se eksemplet How to  How to Java Clone Array Eksempel.

public class CopyArrayExample {

    public static void main(String[] args) {
        int array[] = {1, 0, 4};

        //Creating and cloning Array
        int copyArray[] = array.clone();

        //Update value of copy array
        copyArray[0]++;

        System.out.println("Original Array ");
        for (int i = 0; i < array.length; i++)
            System.out.print(array[i] + " ");

        System.out.println("\nCopy of Array ");
        for (int i = 0; i < copyArray.length; i++)
            System.out.print(copyArray[i] + " ");

    }
}

Output: Original Array
1 0 4
Kopi af Array
2 0 4

Brug af System.arraycopy()

Hvis du ønsker, at et underarray eller få elementer af et array skal kopieres i det nye array, kan du bruge denne ene måde

System.arraycopy() Metoden er til stede i java.lang-pakken.

  • src – Kildearrayet,
  • srcPos – er det indeks, hvorfra kopieringen starter.
  • dest – Destinationsarrayet
  • destPos – De indekskopierede elementer placeres i destinationsarrayet.
  • længde er længden af ​​underarrayet, der skal kopieres i et andet array.

Tjek nedenstående Java Array Clone-eksempel for bedre forståelse.

public class CopyArrayExample {

    public static void main(String[] args) {
        int array[] = {1, 0, 2};

        // Create an copyArray[] same size of array[]
        int copyArray[] = new int[array.length];

        // Copy elements of array[] to copyArray[]
        System.arraycopy(array, 0, copyArray, 0, 3);


        System.out.println("array[] ");
        for (int i=0; i<array.length; i++)
            System.out.print(array[i] + " ");

        System.out.println("\ncopyArray[] ");
        for (int i=0; i<copyArray.length; i++)
            System.out.print(copyArray[i] + " ");
    }
}

Output: matrix[]
1 0 2copyArray[]
1 0 2

Reference af et array (simpelt, men forkert)

Brug af en tildelingsoperator vil kopiere den eneste reference, hvilket betyder, at begge arrayvariabler refererer til samme hukommelse og data. Her er et eksempel på det, og tjek også, om begge har samme reference eller ej.

denne måde er ikke korrekt, fordi ændring af værdien af ​​arrayet på nogen vil afspejle en anden. Som mangler formålet med målet om at få en anden kopi til at ændre noget uden at røre ved originaldata.

public class CopyArrayExample {

    public static void main(String[] args) {
        int array[] = {1, 0, 4};

        /// Create an array b[] of same size as a[]
        int copyArray[] = new int[array.length];

        // Doesn't copy elements of Array - refer to same location
        copyArray = array;
        System.out.println("Is same refer: " + (array == copyArray));
    }
}

Output: Er samme henvisning:sandt

Kommenter, hvis du er i tvivl og forslag til denne tutorial


Java tag