Parcours d'une Hashmap et suppression d'un élément
Bonjour,
Je parcours une hashmap et j'aimerais supprimer certains éléments pendant le parcours.
Je récupère les élement du hashmap avec la méthode entryset de cette façon :
Code:
1 2 3 4 5 6
|
for (Entry<String, MonitoredFile> entry : files.entrySet()) {
if (test) {
files.remove(entry.getKey());
}
} |
En faisant ça je m'attendais à semer la zizanie avec les Iterators sous jacent. C'est évidemment ce qui a l'air de se passer , voici la stacktrace :
Code:
1 2 3 4 5 6 7 8 9
|
Exception in thread "Thread-0" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:841)
at java.util.HashMap$EntryIterator.next(HashMap.java:883)
at java.util.HashMap$EntryIterator.next(HashMap.java:881)
at base.Folder.checkFiles(Folder.java:43) //c'est dans cette fonction que je commet l'erreur
at base.Folder.scan(Folder.java:37)
at base.MonitoredFolder.run(MonitoredFolder.java:17)
at java.lang.Thread.run(Thread.java:613) |
Je voudrais donc savoir s'il y a une bonne façon de faire... j'ai pensé à une LinkedList temporaire où stocker les Key des entry à supprimer, il y a surement mieux.
Merci de votre aide !