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 № 1Verwenden 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