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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !