powtarzanie i usuwanie z mapy [duplikat]

To pytanie ma już odpowiedź tutaj:

Iterowanie przez kolekcję, unikając ConcurrentModificationException podczas usuwania obiektów w pętli 23 odpowiedzi

Robiłem

for (Object key : map.keySet())
    if (something)
        map.remove(key);

, który zgłosił wyjątek ConcurrentModificationException, więc zmieniłem go na:

for (Object key : new ArrayList<Object>(map.keySet()))
    if (something)
        map.remove(key);

to i wszelkie inne procedury modyfikujące mapę są w zsynchronizowanych blokach.

czy jest lepsze rozwiązanie?

jeśli nikt nie wymyśli lepszego rozwiązania, najpierw powiedz, że nie dostanie tyka;)

questionAnswers(12)

yourAnswerToTheQuestion