Mise à jour ArrayList
Résolu/Fermé
neocol
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
-
Modifié par neocol le 13/03/2014 à 12:14
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 - 14 mars 2014 à 00:22
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 - 14 mars 2014 à 00:22
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 a jour windows 7 - Accueil - Mise à jour
2 réponses
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
13 mars 2014 à 23:09
13 mars 2014 à 23:09
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
neocol
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
1
14 mars 2014 à 00:22
14 mars 2014 à 00:22
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
Du coup j'ai mon programme en passant par une autre voie.
Merci pour votre, c'est très util.
Cordialement,
Youness