java - 为什么我同时在 HashMap 上迭代和修改时没有得到 "ConcurrentModificationException"?

标签 java collections

我有一张 map

Map<String, String> map = new HashMap<String, String>();

map.put("Pujan", "pujan");
map.put("Swati", "swati");
map.put("Manish", "manish");
map.put("Jayant", "jayant");
Iterator<Map.Entry<String, String>> itr = map.entrySet().iterator();
while(itr.hasNext()){
  Entry<String,String> entry=(Entry<String, String>) itr.next();
  map.put("Manish", "Updated");
}

我在这里没有遇到异常(我正在尝试修改现有的键值“Manish”)。但是,如果我尝试添加新键 map.put("Manish123", "Updated"),我会得到 ConcurrentModificationException

最佳答案

因为您没有修改迭代器

在这种情况下,

put 将改变现有条目,因为 Map 中已经存在具有相同键的 Map.Entry

关于java - 为什么我同时在 HashMap 上迭代和修改时没有得到 "ConcurrentModificationException"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37166733/

相关文章:

java - 如何使用jsoup访问java中子元素的属性?

Java ArrayList 和 LinkedList - 在末尾添加元素实现细节

ruby-on-rails - 使空白参数[]为零

javascript - BackboneJS 在集合中重新排列模型同时为每个模型维护 0 索引序数属性的最佳方法

java - 迭代时从集合中删除元素

java - 如何根据来自不同 Java 类的字段比较 "equivalence"的两个集合?

java - 无法绑定(bind) rich :dataTable

Java文本组件计算自己的首选大小

Java(生成不重复的数字)

JPanel 上的 Java mouseListener 不起作用