Bonjour tout le monde.
J'ai un petit problème :
J'ai fait ce programme basique et il me génère une ConcurrentModificationException .....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.util.*; class Thing { // simple classe qui contient un entier private int i; public Thing(int i) { this.i = i; } public String toString() {return "Thing " + i;} } public class Test2 { public static void main(String[] args) { List<Thing> lt = new ArrayList<Thing>(); // création et remplissage d'une List for(int i=0; i<6; i++) lt.add(new Thing(i)); List<Thing> sub = lt.subList(2, 5); // on prend une sous-liste System.out.println(sub); lt.removeAll(sub); // et on la retire de la liste d'origine, ça foire ici } }
J'ai regardé dans la javadoc, ce genre d'exception est générée quand on utilise un iterator,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [Thing 2, Thing 3, Thing 4] Exception in thread "main" java.util.ConcurrentModificationException at java.util.AbstractList$SubList.checkMod(libgcj.so.10) at java.util.AbstractList$SubList.listIterator(libgcj.so.10) at java.util.AbstractList.listIterator(libgcj.so.10) at java.util.AbstractList$SubList.iterator(libgcj.so.10) at java.util.AbstractCollection.contains(libgcj.so.10) at java.util.ArrayList.removeAllInternal(libgcj.so.10) at java.util.AbstractCollection.removeAll(libgcj.so.10) at Test2.main(Test2.java:18)
ce que je ne fais pas (en tout cas pas de façon apparente) ici.
quequ'un peut-il (elle) m'aider à résoudre le mystère?
Merci d'avance
Partager