Warum erhalte ich eine ConcurentModificationException beim entfernen aus einer HashMap?

Möchte ich entfernen Sie ein Element aus der HashMap, durch die Anwendung einer Kriterien. Betrachten Sie diesen code:

Set<Foo> set = myMap.keySet();
Iterator<Foo> itr = set.iterator();
while (itr.hasNext())
{
    Foo foo = itr.next();
    if (foo.toString().length() < 3) {
        myMap.remove(foo); //remove the pair if key length is less than 3
    }
}

So bekomme ich einen ConcurentModificationException, weil während der iteration ich bin ändern der HashMap. Was soll ich tun? Gibt es irgendeinen anderen Weg, auf die Suche nach meinen Kriterien und führen Sie die entfernen-Befehl am Ende, damit kann ich vermeiden, diese Ausnahme?

Wenn ich mit try - /catch-block, der zur Laufzeit des Programms ist irgendwo hängen geblieben und cursor hält blinkt. Ich habe um das Programm zu beenden, indem Sie STRG+C Ist es trotzdem kann ich tun, um diese situation zu vermeiden und dennoch in der Lage zu entfernen, die Schlüssel/Wert-paar aus der HashMap

InformationsquelleAutor Mavin | 2010-11-28

Schreibe einen Kommentar