ConcurrentModificationException dans une List
Bonjour tout le monde.
J'ai un petit problème :
Code:
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 fait ce programme basique et il me génère une ConcurrentModificationException .....
Code:
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) |
J'ai regardé dans la javadoc, ce genre d'exception est générée quand on utilise un iterator,
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