Accéder au contenu principal
Documents
Tableaux JavaProgrammation orientée objet en JavaTraitement des fichiers en JavaIntroduction To JavaLes bases du langage JavaMots-clés Java

Tableau Java copyOf()

La méthode Arrays.copyOf() en Java est une fonction utilitaire fournie par la classe java.util.Arrays. Il est utilisé pour créer un nouveau tableau en copiant la plage d'éléments spécifiée à partir d'un tableau existant. Cette méthode est utile pour le redimensionnement des tableaux, la copie partielle de tableaux et la création de sauvegardes de tableaux.

Utilisation

Arrays.copyOf() est couramment utilisée lorsque vous devez dupliquer un tableau de taille différente ou lorsque vous souhaitez ne copier qu'une partie d'un tableau. Il renvoie un nouveau tableau contenant les éléments copiés, et le tableau d'origine reste inchangé.

Syntax

public static <T> T[] copyOf(T[] original, int newLength)
  • original: Le tableau dont les éléments doivent être copiés.
  • newLength: La longueur du nouveau tableau. S'il est supérieur à la longueur du tableau original, le nouveau tableau est complété par des valeurs par défaut.

Exemples

Exemple 1 : Copie d'un tableau entier

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

Dans cet exemple, Arrays.copyOf() est utilisé pour créer une copie exacte de originalArray. Le nouveau tableau copiedArray contient tous les éléments du tableau original.

Exemple 2 : Copie avec un format plus grand

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

Ici, Arrays.copyOf() est utilisé pour créer un nouveau tableau extendedArray d'une longueur de 5. Les éléments supplémentaires sont initialisés à la valeur par défaut de 0 pour le type int.

Exemple 3 : Copier avec une taille plus petite

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

Dans cet exemple, Arrays.copyOf() crée un nouveau tableau truncatedArray contenant uniquement les deux premiers éléments de originalArray.

Conseils et bonnes pratiques

  • Original immuable: Le tableau original n'est pas modifié par Arrays.copyOf(), ce qui garantit l'intégrité des données.
  • Valeurs par défaut: Lorsque la longueur du nouveau tableau est supérieure à celle de l'original, les nouveaux éléments prennent des valeurs par défaut (0, null, false, etc.).
  • Types de tableaux: Arrays.copyOf() fonctionne avec tous les types de primitives et d'objets, ce qui le rend polyvalent pour divers types de données.
  • Performance: Soyez attentif aux performances lorsque vous copiez de grands tableaux, car cela implique la création d'un nouveau tableau et la copie d'éléments.

Comprendre la copie superficielle et la copie profonde

Arrays.copyOf() produit une copie superficielle, où les références aux éléments originaux sont copiées plutôt que les objets eux-mêmes. Il est important de s'en souvenir lorsqu'il s'agit de structures de données complexes telles que des tableaux 2D ou des tableaux d'objets, où les modifications apportées aux objets du tableau d'origine peuvent se répercuter sur le tableau copié.

Exceptions

  • NegativeArraySizeException: Lancé si le paramètre newLength est négatif.
  • NullPointerException: Lancé si le tableau original est null.

Apprendre l'essentiel de Java

Développez vos compétences en Java à partir de la base et maîtrisez les concepts de programmation.
Commencez à apprendre gratuitement