Java - problème avec ArrayList<ArrayList<type>>

CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014 - 29 déc. 2010 à 15:02
CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014 - 29 déc. 2010 à 15:34
Bonjour,

J'ai un soucis avec des ArrayList d'ArrayList. En bref, voici mon code :
private ArrayList array1 = new ArrayList>();
private ArrayList array2= new ArrayList<type>();

Le problème est que quand je veux ajouter un objet array2 dans l'array1 au moyen du code suivant :
array1.add(array2);

L'array2 est bien ajouter à la fin de l'array1 (array1.size() prend une valeur de plus), mais toutes les entités au sein de l'array1 prenne la valeur du dernier array2 ajouté.

Y aurait-il une subtilité qui m'aurait échappée ?

Merci d'avance pour les réponses

David

1 réponse

CSIBern Messages postés 44 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 21 mai 2014
29 déc. 2010 à 15:34
Re,

La réponse m'a été donnée sur un autre forum. La voici :
Hello,

la seule raison que je vois c'est que tu ne changes pas la référence de array2 dans ton code et que tu vide et modifie la même liste.
Et donc tu modifies en fait la même liste contenue dans array1.

Preuve de ce que je te dis, essaye ce code :
public class MainTest {
public static void main(String[] args) {
List<List> array1 = new ArrayList<List>();
List array2 = new ArrayList();
array2.add(new A("ajout1"));
array1.add(array2);
 
array2 = new ArrayList();
array2.add(new A("ajout2"));
array1.add(array2);
 
for (List l : array1) {
System.out.println(l.get(0));
}
}
 
private static class A {
private String ref;
 
public A(String ref) {
this.ref = ref;
}
 
@Override
public String toString() {
return ref;
}
 
/**
 * @return the ref
 */
public String getRef() {
return ref;
}
 
}
 
}
0
Rejoignez-nous