/ / Löschen Sie Elemente aus Hashmap, während Sie darüber iterieren - Java, Hashmap, gleichzeitige Änderung

Löschen Sie Elemente aus Hashmap, während Sie darüber iterieren - java, hashmap, concurrentmodification

Hier ist mein Code. Ich habe eine Arrayliste der besuchten Elemente. Also möchte ich diese besuchten Elemente aus der Hashmap löschen und unten ist Code. Es gibt mir Ausnahme gleichzeitige Änderung.

private static void removeVisitedNodes(ArrayList<String> arrayList) {
// TODO Auto-generated method stub

Iterator<String> it = arrayList.iterator();
String temp;
while(it.hasNext())
{
temp = it.next();
System.out.println("temp is " + temp);
Iterator<Entry<String, ArrayList<String>>> iter = neighbours_reachability_map.entrySet().iterator();

// iterate through the hashmap to remove elements
while (iter.hasNext()) {
Entry<String, ArrayList<String>> entry = iter.next();
if(entry.getValue().contains(temp)){
//System.out.println("Contains it"  + entry.getValue().toString());
entry.getValue().remove(temp);
}
}

}
}

Ich habe ein paar ähnliche Fragen geprüft, aber sie haben nicht viel geholfen. Gibt es eine bessere Möglichkeit, dies zu tun, ohne eine Ausnahme zu verursachen? Vielen Dank im Voraus für Ihre Hilfe.

Antworten:

2 für die Antwort № 1

Verwenden Sie, um ein Element während der Iteration zu entfernen Iterator.remove().


1 für die Antwort № 2

Sie können die zu löschenden Elemente in ein anderes Sammlungsobjekt einfügen und diese Elemente nach Abschluss der Iteration löschen