Copie Java ArrayList

J’ai un ArrayList l1 de taille 10. J’atsortingbue l1 au nouveau type de référence de liste l2 . Est-ce que l1 et l2 pointent vers le même object ArrayList ? Ou une copie de l’object ArrayList affectée à l2 ?

Lorsque vous utilisez la référence l2 , si je mets à jour l’object liste, il reflète également les modifications du type de référence l1 .

Par exemple:

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

N’y a-t-il pas d’autre moyen d’atsortingbuer une copie d’un object de liste à une nouvelle variable de référence, en dehors de la création de 2 objects de liste et de la copie sur des collections de l’ancien vers le nouveau?

Oui, l’affectation ne fera que copier la valeur de l1 (qui est une référence) à l2 . Ils se réfèrent tous deux au même object.

Créer une copie superficielle est assez simple:

 List newList = new ArrayList<>(oldList); 

(Juste comme un exemple.)

Essayez d’utiliser Collections.copy(destination, source);

Oui l1 et l2 la même référence, même object.

Si vous souhaitez créer une nouvelle ArrayList basée sur l’autre ArrayList, procédez comme suit:

 List l1 = new ArrayList(); l1.add("Hello"); l1.add("World"); List l2 = new ArrayList(l1); //A new arrayList. l2.add("Everybody"); 

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

Un autre moyen pratique de copier les valeurs de src ArrayList vers dest Arraylist est le suivant:

 ArrayList src = new ArrayList(); src.add("test ssortingng1"); src.add("test ssortingng2"); ArrayList dest= new ArrayList(); dest.addAll(src); 

Ceci est la copie réelle des valeurs et pas seulement la copie de référence.

Il existe une méthode addAll () qui servira à copier One ArrayList vers une autre.

Par exemple, vous avez deux listes de tableaux : sourceList et targetList , utilisez ci-dessous le code.

targetList.addAll (sourceList);

Java ne transmet pas les objects, il passe des références (pointeurs) aux objects. Donc oui, l2 et l1 sont deux pointeurs vers le même object.

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