Java >> Tutoriel Java >  >> Java

Tableau de copie Java | Exemples de clone de tableau Java

Voici la situation, vous avez un tableau et vous voulez qu'une autre copie en manipule les données. Donc, pour ce faire, vous avez besoin d'une copie du tableau. Dans ce didacticiel, vous apprendrez "Comment Java Copy Array ” exemple de programme.

Avant de commencer, il faut lire le – Array Initialization | Tutoriel sur les types avec exemples

Commençons la copie de tableau en Java

  • Itération :simple et correcte
  • Utiliser Cloner()
  • Utilisation de System.arraycopy()
  • Référence d'un tableau (simple mais erronée)

Exemples de tableau de copie Java

Voyons un par un exemple comment copier un tableau avec différentes méthodes.

Itération - Facile

Une itération en cours est un moyen simple de copier un tableau en Java. Copie de chaque élément à la fois.

Voici l'exemple utilisé une boucle for Java pour une itération. Nous vérifions si la référence Array est identique ou non. Ce ne sera pas la même chose car le copyArray est une allocation de mémoire différente et la modification de sa valeur ne se répercutera pas sur les tableaux d'origine.

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));
    }
}

Sortie : Tableau d'origine
9 0 3
Copie du tableau
9 0 3
Est le même :faux

Utiliser Cloner()

Tant d'itérations de boucle sur un exemple supérieur ? Voici java peut faire beaucoup mieux avec la méthode clone() . Consultez l'exemple How to  Comment cloner un tableau en Java.

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] + " ");

    }
}

Sortie : Tableau d'origine
1 0 4
Copie du tableau
2 0 4

Utilisation de System.arraycopy()

Si vous voulez qu'un sous-tableau ou quelques éléments d'un tableau soient copiés dans le nouveau tableau, vous pouvez utiliser cette méthode

System.arraycopy() La méthode est présente dans le package java.lang.

  • src – Le tableau source,
  • srcPos – est l'index à partir duquel la copie commence.
  • dest – Le tableau de destination
  • PosDest – Les éléments copiés de l'index sont placés dans le tableau de destination.
  • longueur est la longueur du sous-tableau à copier dans un autre tableau.

Consultez l'exemple de clone de tableau Java ci-dessous pour une meilleure compréhension.

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] + " ");
    }
}

Sortie : déployer[]
1 0 2copyArray[]
1 0 2

Référence d'un tableau (simple mais erroné)

L'utilisation d'un opérateur d'affectation copiera la seule référence, ce qui signifie que les deux variables de tableau feront référence à la même mémoire et aux mêmes données. En voici un exemple et vérifiez également que les deux ont la même référence ou non.

cette méthode n'est pas correcte, car la modification de la valeur du tableau sur n'importe qui en reflétera une autre. Ce qui manque l'objet de l'objectif d'obtenir une autre copie pour apporter des modifications sans toucher aux données d'origine.

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));
    }
}

Sortie : Est-ce la même référence :vrai

N'hésitez pas à commenter si vous avez des doutes et des suggestions sur ce tutoriel


Balise Java