Mise à jour ArrayList

Résolu
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -
Salut, j'ai une question si vous permettez,

J'ai créé une fonction qui retourne une Arraylist<String> AR.cette fonction marche dans une boucle.
comment faire pour que la nouvelle AR soit ajoutée à la fin de l'ancienne AR ?
j'ai essayé deux boucles :
MaListArray (de type String) = calculate(int n);
System.out.println("MaListArray="+MaListArray);
1ére méthode
for (String st1 : MaListArray)
{
//int i;
String st1=MaListArray.get(i);
System.out.println("st1"+st1);
MaListArray.add(st1);
}
System.out.println("MaListArray apres update"+MaListArray);
2émé méthode
for(int i=0; i<MaListArray.size(); i++)
{
String st1 = MaListArray.get(i);
// System.out.println("st1"+st1);
MaListArray.add(str1);
}
System.out.println("MaListArray apres update"+MaListArray);

Mais dans les deuc cas : il me dit Unknown source , pourtant :
System.out.println("MaListArray="+MaListArray); donne le bon résultat

Merci
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Tu dois faire attention à ce que tu fais. Dans tes deux codes tu ajoutes les éléments de MaListArray à elle même.

Si tu copies [1] tu vas avoir [1, 1] mais comme tu viens de rajouter un élément, la taille de ta liste vient d'augmenter, donc tu continues, tu vas donc avoir [1, 1, 1] puis [1, 1, 1, 1], etc. ton programme s'arrêtera lorsque tu n'auras plus assez de mémoire pour stocker l'infinité d'éléments que tu ajoutes au fur et à mesure.
Du moins ça c'est ce qui arriveras dans le deuxième code, car avec le premier code tu te feras jeter par une ConcurrentModificationException parce que l'iterator de la boucle for each va t'interdire de modifier la liste sur laquelle tu itères...

De toute façon, pas besoin de boucles pour faire ça. Tu as la méthode addAll qui te permet d'ajouter tout ce que tu veux à ta liste en un seul coup et sans erreur.

System.out.println(list1); // 1, 2, 3
System.out.println(list2); // 4, 5, 6
list1.addAll(list2);
System.out.println(list1); // 1, 2, 3, 4, 5, 6
0
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour KX, c'est exactement l'erreur que j'ai trouvée.

Du coup j'ai mon programme en passant par une autre voie.

Merci pour votre, c'est très util.

Cordialement,
Youness
0