【发布时间】:2020-10-28 20:25:05
【问题描述】:
我想删除频率为 1 的键,但出现以下错误
Exception in thread "main" java.util.ConcurrentModificationExceptionat java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1495)
at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1518)
at Temp3.main(Temp3.java:14)
如何解决?
import java.io.*;
import java.util.HashMap;
import java.util.*;
public class Temp3 {
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap();
map.put(1,1);
map.put(2,1);
map.put(3,1);
map.put(4,2);
for(int k: map.keySet()){
if( map.get(k) == 1){
map.remove(k);
}
}
}
}
【问题讨论】:
-
当你在地图上迭代时,你不能修改它,否则你会得到一个
ConcurrentModificationException。使用支持删除的Iterator,或者临时复制要删除的元素到新的数据结构中,然后再删除。 -
这能回答你的问题吗? iterating over and removing from a map
标签: java dictionary collections hashmap