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 -
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
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:
- Mise à jour ArrayList
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise à jour libre office - Accueil - Bureautique
2 réponses
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.
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