Überprüfen und Entfernen von einer Karte [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Über eine Sammlung iterieren, ConcurrentModificationException beim Entfernen von Objekten in einer Schleife vermeiden 23 answers

Ich habe getan

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

Das warf eine ConcurrentModificationException, so änderte ich es auf:

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

dies und alle anderen Prozeduren, die die Zuordnung ändern, befinden sich in synchronisierten Blöcken.

Gibt es eine bessere Lösung?

wenn sich niemand eine bessere lösung einfallen lässt, erstmal nein sagen bekommt der tick;)