迭代map时出现ConcurrentModificationException

时间:2013-03-11 19:15:33

标签: java concurrency

我在迭代地图内容时获得ConcurrentModificationException

    for (String sourceKey : sMap.getContent().keySet()) {

        List<String> sourceValues = sMap.getValues(sourceKey);
        List<String> targetValues = tMap.getValues(sourceKey);

        if (areMultiple(sourceValues)) {
        ....
    }

sMap.getContent()返回Map<String, List<String>>,其中我只获取密钥。

请注意,不会修改地图的内容。我只是在这里迭代。

我在这里做错了什么?如何在抛出异常时纠正这种情况?

1 个答案:

答案 0 :(得分:2)

如果迭代的基础集合被Iterator本身以外的任何东西修改,就会发生这种情况。

尝试使用ConcurrentHashMap而不是普通的HashMap