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

Comment cloner en profondeur des ArrayLists en Java ?

Linda Hamilton
Libérer: 2025-01-01 02:00:09
original
330 Les gens l'ont consulté

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.
    }
}
Copier après la connexion

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;
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal