在迭代 Hashmap 时删除元素
Delete elements from Hashmap while iterating over it
这是我的代码。我有一个已访问元素的数组列表。所以我想从哈希图中删除这些访问过的元素,下面是代码。它给了我并发修改异常。
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);
}
}
}
}
我检查了其他几个类似的问题,但没有多大帮助。有没有更简洁的方法来执行此操作而不会导致异常?在此先感谢您的帮助。
你可以将要删除的元素放在另一个集合对象中,然后在迭代完成后删除这些元素
要在迭代过程中删除元素,请使用 Iterator.remove()
。
这是我的代码。我有一个已访问元素的数组列表。所以我想从哈希图中删除这些访问过的元素,下面是代码。它给了我并发修改异常。
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);
}
}
}
}
我检查了其他几个类似的问题,但没有多大帮助。有没有更简洁的方法来执行此操作而不会导致异常?在此先感谢您的帮助。
你可以将要删除的元素放在另一个集合对象中,然后在迭代完成后删除这些元素
要在迭代过程中删除元素,请使用 Iterator.remove()
。