Maison >Java >javaDidacticiel >Comment cloner en profondeur des ArrayLists en Java ?

Comment cloner en profondeur des ArrayLists en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-01 02:00:09331parcourir

How to Deep Clone ArrayLists in Java?

Clonage de ArrayList et de leur contenu

En Java, le clonage profond d'une ArrayList implique la création d'une nouvelle liste contenant de nouvelles instances des objets de la liste d'origine , plutôt que des références aux objets originaux. Pour y parvenir, une approche globale est nécessaire.

Clonage personnalisé

Une méthode consiste à créer un constructeur de clonage personnalisé pour les objets stockés dans ArrayList. Ce constructeur dupliquerait les champs de chaque objet, créant ainsi une nouvelle copie plutôt qu'une simple référence à l'original.

Par exemple, avec une classe Dog :

class Dog {
    public Dog() { ... } // Regular constructor

    public Dog(Dog dog) {
        // Copy all the fields of Dog.
    }
}

En itérant l'ArrayList d'origine et en créant de nouveaux objets Dog à l'aide de ce constructeur, une liste clonée avec des objets indépendants peut être créé :

public static List<Dog> cloneList(List<Dog> dogList) {
    List<Dog> clonedList = new ArrayList<>(dogList.size());
    for (Dog dog : dogList) {
        clonedList.add(new Dog(dog));
    }
    return clonedList;
}

Interface cloneable

De plus, définir une interface ICloneable personnalisée avec une méthode clone() peut activer le clonage générique pour différents types d'objets. Cependant, il convient de noter que cette approche nécessite la mise en œuvre de la logique de clonage pour chaque type à cloner.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn