271 votes

copie d’arraylist de Java

J'ai un ArrayList l1 de taille 10. - Je attribuer l1 à la nouvelle liste de référence de type l2. Va en l1 et en l2 point à un même objet arraylist? Ou une copie de l'objet arraylist est affecté à la l2. Parce que l'Utilisation de la l2 de référence, si je mettre à jour la liste objet, il reflète les changements dans l1 type de référence aussi.

par exemple.

List<Integer> l1 = new ArrayList<Integer>();
for(int i=1;i<=10;i++)
   l1.add(i);
List l2 = l1;
l2.clear();

Il n'y a pas d'autre moyen pour attribuer une copie de la liste des objets de la nouvelle variable de référence, à part la création de 2 objets de la liste, et de faire des copier sur les collections de l'ancien au nouveau?

Merci d'avance

561voto

Jon Skeet Points 692016

Oui, affectation copiera simplement la valeur de (qui est une référence) à . Ils seront deux référence au même objet.

Crée une copie superficielle est cependant assez facile :

(Tout comme un exemple.)

74voto

Sergii Zagriichuk Points 3393

Essayez d’utiliser``

36voto

Alfredo Osorio Points 3808

Oui et pointera vers la même référence, même objet.

Si vous souhaitez créer une ArrayList nouveau basé sur l’autre ArrayList vous faites ceci :

Le résultat sera aura toujours 2 éléments et aura 3 éléments.

19voto

Harshal Waghmare Points 635

Un autre moyen pratique pour copier les valeurs de src ArrayList dans dest Arraylist est comme suit :

C’est la véritable copie de valeurs et pas seulement la copie de référence.

4voto

JB Nizet Points 250258

Java ne passe pas les objets, il passe (pointeurs) les références aux objets. Alors oui, l2 et l1 sont deux pointeurs vers le même objet.

Vous devez faire une copie explicite si vous avez besoin de deux listes différentes avec le même contenu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X