Вот мой код. У меня есть аррайалист посещаемых элементов. Поэтому я хочу удалить эти посещенные элементы из hashmap, а ниже - код. Это дает мне исключение для одновременной модификации.Удалить элементы из Hashmap во время итерации по нему
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);
}
}
}
}
Я проверил несколько других подобных вопросов, но они мало помогли. Есть ли более простой способ сделать это, не вызывая исключения? Заранее спасибо за вашу помощь.
Работы для меня вы можете показать нам свои входные значения и стек? – dkatzel
My neighbours_reachability_mapKey is - Key: 1 - [4, 5, 6] Ключ: 2 - [5, 6, 4] Ключ: 3 - [7, 4] .. И список [4,5] So Я пытаюсь удалить все 4s и 5s из hashmap. Ошибка - исключение в потоке "главный" java.util.ConcurrentModificationException \t в java.util.ArrayList $ Itr.checkForComodification (Unknown Source) \t в java.util.ArrayList $ Itr.next (Unknown Source) \t в acn.project.testAppend.removeVisitedNodes (testAppend.java:79) \t at acn.project.testAppend.main (testAppend.java:59) – maddie