Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1738 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  ArrayList qui se met à jour

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ArrayList qui se met à jour

n°2045441
loic_1715
Posté le 31-12-2010 à 20:46:29  profilanswer
 

Bonsoir, :hello:  
 
J'ai un souci avec une ArrayList qui se met à jour toute seule.
Voici le morceau de code qui pose souci :

Citation :

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
mood
Publicité
Posté le 31-12-2010 à 20:46:29  profilanswer
 

n°2045442
mr simon
Posté le 31-12-2010 à 21:16:55  profilanswer
 

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:

  • a.add(new ArrayList<Integer>(b))
  • via clone(), a.add( (ArrayList<Integer> )b.clone()).


Message édité par mr simon le 31-12-2010 à 21:23:28
n°2045443
loic_1715
Posté le 31-12-2010 à 22:07:00  profilanswer
 

Merci :jap: Effectivement, ça marche avec la 1ère méthode. Il y a une des 2 méthodes à privilégier ?


---------------
"Les animaux sont moins intolérants que nous : un cochon affamé mangera du musulman." Desproges
n°2045444
mr simon
Posté le 31-12-2010 à 22:17:09  profilanswer
 

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.
 

n°2045445
loic_1715
Posté le 31-12-2010 à 22:35:46  profilanswer
 

Ok, merci :jap:


---------------
"Les animaux sont moins intolérants que nous : un cochon affamé mangera du musulman." Desproges

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  ArrayList qui se met à jour

 

Sujets relatifs
Java et arraylist d'objets[GtkAda] Mettre à jour un combo à chaque selection
Mise a Jour Via PHP de DynDNS.com[RESOLU][access07][VBScript]dupliquer et garder une BDD à jour
[resolu] Transformer numero de jour et semaine en date[MySQL] mise à jour BDD sans interruption de service
Mise à jour de Signet Word[VB.NET] Affichage MsChart continuellement mis a jour
[Oracle]Mise à jour de clé étrangère aléatoiremise à jour de liste déroulante sous access 2007
Plus de sujets relatifs à : ArrayList qui se met à jour


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR