假设一个映射包含整数键和一个字符串列表作为它的值。然后,我不能这样做:
for (Map.Entry<Integer, List<String>> entry : map.entrySet()){
for (String string : entry.getValue()){
if (string.startsWith("a")){
entry.getValue().remove(string);
}
}
}
它抛出ConcurrentModificationException
。但是,如果我执行以下操作:
for (Map.Entry<Integer, List<String>> entry : map.entrySet()){
entry.setValue(new ArrayList<String>());
}
这完美地工作。我们现在不是在修改底层地图吗?