我有类似下面的代码,其中内部循环修改Hashmap,但仅以不添加或删除新密钥的方式,但仅更新值。这是否有资格作为Hashmap的修改,以便抛出并发修改异常?在我目前的测试中,我还没有发现任何例外情况。
for(String variable:variableMap.descendingKeySet()) {
for (String innerVariable : variableMap.keySet()) {
variableMap.put(innerVariable, variableMap.get(innerVariable).replace("$" + variable, variableMap.get(variable)));
}
}
答案 0 :(得分:2)
此类的所有“集合视图”返回的迭代器 方法“快速失败:如果地图结构修改 创建迭代器之后的时间,除了通过之外的任何方式 迭代器自己的
remove
方法,迭代器会抛出一个ConcurrentModificationException
。
现在什么是“结构修改”?
结构修改是添加或删除一个或多个的任何操作 更多映射; 仅仅更改与键相关的值表示 实例已包含不结构修改。
所以,不,如果您只修改密钥的值,则不会获得ConcurrentModificationException
。