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 :
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 for (Entry<String, MonitoredFile> entry : files.entrySet()) { if (test) { files.remove(entry.getKey()); } }
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.
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)
Merci de votre aide !
Partager