HashMap在迭代时使用了remove报错的处理方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap在迭代时使用了remove报错的处理方法相关的知识,希望对你有一定的参考价值。

今天使用迭代处理Map中的垃圾数据时,报错:java.util.ConcurrentModificationException;

--HashMap  rmTypemap

for(String key : rmTypemap.keySet()) {

    if("0".equals(firstCodeMap.get(key))){

    rmTypemap.remove(key);

    }

}

当rmTypemap remove此时迭代的对象发生改变,Iterator(Object ele=it.next())会检查HashMap的size,size发生变化,抛出错误ConcurrentModificationException。

处理方法:用ConcurrentHashMap替换HashMap,ConcurrentHashMap会自己检查修改操作,对其加锁,也可针对插入操作。

本文出自 “Mark的技术博客” 博客,请务必保留此出处http://vclisunlang.blog.51cto.com/10785931/1749695

以上是关于HashMap在迭代时使用了remove报错的处理方法的主要内容,如果未能解决你的问题,请参考以下文章

LinkedHashMap 源码解读

关于Support for password authentication was removed on August 13, 2021报错的解决方案

MySQL通过游标(CURSOR)实现对select选择集的迭代使用,解决在Navicat中声明游标就一直报错的问题

ArrayList在foreach正常迭代删除不报错的原因

SAP CRM点了附件的超链接后报错的处理方式

MySQL数据库启动报错的处理