/ / Supprimer des éléments de Hashmap en itérant dessus - Java, hashmap, modification simultanée

Supprimer des éléments de Hashmap en itérant dessus - java, hashmap, simultanéemodification

Voici mon code. J'ai un aryliste d'éléments visités. Donc, je veux supprimer ces éléments visités de la table de hachage et ci-dessous est le code. Cela me donne une exception de modification simultanée.

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);
}
}

}
}

J'ai vérifié quelques autres questions similaires, mais elles ne m'ont pas beaucoup aidé. Y a-t-il un moyen plus simple de faire cela sans provoquer une exception? Merci d'avance pour votre aide.

Réponses:

2 pour la réponse № 1

Pour supprimer un élément en cours d’itération, utilisez Iterator.remove().


1 pour la réponse № 2

vous pouvez placer les éléments que vous souhaitez supprimer dans un autre objet de collection, puis, une fois l'itération terminée, supprimer ces éléments