【发布时间】:2019-02-06 19:06:57
【问题描述】:
我们在遍历list的时候添加重复元素,iterator没有给出并发修改异常,这是什么原因?
Map<String,String> myMap = new HashMap<String,String>();
myMap.put("1", "1");
myMap.put("2", "2");
myMap.put("3", "3");
Iterator<String> it1 = myMap.keySet().iterator();
while(it1.hasNext()){
String key = (String) it1.next();
System.out.println("Map Value:"+myMap.get(key));
if(key.equals("2")){
myMap.put("1","4");
}
}
【问题讨论】:
-
阅读文档,即
HashMap的javadoc:"请注意,一般来说,不能保证迭代器的快速失败行为, 在存在不同步的并发修改的情况下无法做出任何硬性保证。快速失败的迭代器会尽最大努力抛出ConcurrentModificationException。因此,编写依赖于此异常的正确性的程序是错误的:迭代器的快速失败行为应该只用于检测错误。”
标签: java collections hashmap