2015-12-06 3 views
3

Вот мой код. У меня есть аррайалист посещаемых элементов. Поэтому я хочу удалить эти посещенные элементы из 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); 
      } 
     } 

    } 
} 

Я проверил несколько других подобных вопросов, но они мало помогли. Есть ли более простой способ сделать это, не вызывая исключения? Заранее спасибо за вашу помощь.

+0

Работы для меня вы можете показать нам свои входные значения и стек? – dkatzel

+0

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

ответ

1

вы можете поставить ELEMENTOS вы хотите удалить, в другом объекте коллекции, а затем, после того, как закончил итерации, удалить эти элементы

Смежные вопросы