ArrayList qui se met à jour - Java - Programmation
Marsh Posté le 31-12-2010 à 21:16:55
En java, tu manipules des references et non pas des objets (contrairement au C++).
Donc quand tu fais "a.add(b)", "a" contient une reference vers le meme objet. Si ce n'est pas le comportement que tu souhaites, tu dois explicitement faire une copie:
Marsh Posté le 31-12-2010 à 22:07:00
Merci Effectivement, ça marche avec la 1ère méthode. Il y a une des 2 méthodes à privilégier ?
Marsh Posté le 31-12-2010 à 22:17:09
La methode clone peut se reveler problematique sur certains types (pas de problemes a priori sur Integer et ArrayList). Certaines personnes preferent l'eviter, donc je dirais la premiere, mais ce n'est que mon humble avis.
Marsh Posté le 31-12-2010 à 22:35:46
Ok, merci
Marsh Posté le 31-12-2010 à 20:46:29
Bonsoir,
J'ai un souci avec une ArrayList qui se met à jour toute seule.
Voici le morceau de code qui pose souci :
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> b = new ArrayList<Integer>();
System.out.println(a); // affiche []
b.add(1);
b.add(2);
a.add(b);
System.out.println(a); // affiche [[1, 2]]
b.clear();
System.out.println(a); // affiche [[]]
Je ne comprends pas pourquoi le contenu de a se met à jour quand on vide b.
Pour ma part, je pensais qu'une fois qu'on mettait le contenu de b dans a, on pouvait changer b sans cela change a.
Des conseils/idées pour que le contenu de a ne soit pas affecté par les changements de b ?
Merci & bonne année 2011 !
---------------
"Les animaux sont moins intolérants que nous : un cochon affamé mangera du musulman." Desproges