从HashMap中删除条目

时间:2016-11-16 10:06:52

标签: java hashmap

我有一个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

3 个答案:

答案 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的副本并对副本进行任何更改。