我有一个HashMap:
public static Map<String, Set<String>> adjMap = new HashMap<String, Set<String>>();
adjMap.put(title, new HashSet<String>());
adjMap.get(title).add(cutTitle(graphLink));
现在我想删除值(HashSet)中的所有条目,它不包含任何键。
到目前为止,这是我的代码:
for(String s: adjMap.keySet()){
for(Set<String> s1: adjMap.values()){
for(String s2: s1){
if(!s.contains(s2)){
s1.remove(s2);
}
}
}
}
但我得到一个例外:
线程中的异常&#34; main&#34; java.util.ConcurrentModificationException
答案 0 :(得分:2)
迭代你的地图
Iterator it = adjMap.entrySet().iterator();
while (it.hasNext())
{
Entry item = it.next();
map.remove(item.getKey());
}
答案 1 :(得分:0)
我认为 - 每个循环都不允许改变迭代对象。要删除条目,您应该使用迭代器。
与map-Iteration比较一个例子。
答案 2 :(得分:0)
您可以改为使用ConcurrentHashMap
,或创建HashMap
的副本并对副本进行任何更改。