Ainsi, si j'essaie de supprimer des éléments d'un fichier Java HashSet en itérant, j'obtiens un ConcurrentModificationException . Quelle est la meilleure façon de supprimer un sous-ensemble d'éléments d'un fichier HashSet comme dans l'exemple suivant ?
Set<Integer> set = new HashSet<Integer>();
for(int i = 0; i < 10; i++)
set.add(i);
// Throws ConcurrentModificationException
for(Integer element : set)
if(element % 2 == 0)
set.remove(element);
Voici une solution, mais je ne pense pas qu'elle soit très élégante :
Set<Integer> set = new HashSet<Integer>();
Collection<Integer> removeCandidates = new LinkedList<Integer>();
for(int i = 0; i < 10; i++)
set.add(i);
for(Integer element : set)
if(element % 2 == 0)
removeCandidates.add(element);
set.removeAll(removeCandidates);
Merci !