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会自己检查修改操作,对其加锁,也可针对插入操作。

时间: 2025-01-07 13:27:41

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

Linux--- MySQL中GRANT命令执行时发生root权限报错及解决方法

好不容易解决了root用户密码登录的问题,在给新建用户test1授权时出现了如下报错,提示root权限问题: mysql> GRANT ALL ON *.* TO 'test1'@'localhost' IDENTIFIED BY '123456';  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 查了网上很多方法说# mysqld_safe -u mysql --skip-

Java中List.remove报错UnsupportedOperationException

Java中List.remove(removeRange,clear类似) 报出 UnsupportedOperationException 的错误.原来该List是一个AbstractList,不支持增删改操作. 一般情况下我们会使用 LinkedList 和 ArrayList ,什么情况下出现 AbstractList 呢?通过 ArrayList.asList() 函数得到的 List 就是 AbstractList.该AbstractList只是简单地在已有的元素数组上套了一层List

表空间正在热备份时关闭实例重启报错的重现和解决

最近一个客户的库在OPEN时报错需要恢复,发现原因为当时一个表空间正在热备份-->ALTER TABLESPACE TEST1 BEGIN BACKUP;  然后实例异常关闭(可能为ABORT或KILL SMON等进程,这里据说为存储直接关闭导致),然后重启时遇到此错误. 在ORACLE 10.2.0.1及11.2.0.4版本中重现了此错误,在这两个版本中同样的情况但是报错信息不太一样,具体情况如下: 10.2.0.1.0 版本表空间正在热备份时关闭实例重启报错的重现和解决: SQL> sel

resion 编译时,遇到java报错问题

checking if/usr/lib/jvm/java-1.7.0/bin/java -d64 is Java 1.6... no configure: error: Java1.6 required. /usr/lib/jvm/java-1.7.0/bin/java -d64 returned: java version"1.7.0_55" OpenJDK RuntimeEnvironment (rhel-2.4.7.1.el6_5-x86_64 u55-b13) OpenJDK

node启动时, listen EADDRINUSE 报错;

1.启动时, listen  EADDRINUSE 报错: 查看是因为 端口被占用了,换了端口 还是不行:      查看了 被占用的端口,端口没有为:4000: 突然想到,每次启动node服务后,都没有关闭: 于是,查看任务进程,把node.js进程关闭后,重新启动 node环境即可!

使用maven多模块来构建系统时,spring初始化报错的问题

最近在实验maven结构的maven工程时,碰到一个问题,springbean总是初始化失败: Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [D:\workspace\mavenweb\mavenweb-webapp\src\main\webapp\WEB-INF

Windows8 上面安装Oracle 11g 时,安装程序报错:[INS-13001]环境不满足最低要求

Oracle 11g 时,安装程序报错:[INS-13001]环境不满足最低要求,解决方法: 在安装文件的/stage/svu文件夹下面找到文件 cvu_prereq.xml文件,修改为如下(添加windows 8 相关字段): <?xml version="1.0"?> <HOST PLATID="912"> <SYSTEM> <MEMORY> <PHYSICAL_MEMORY VALUE="128&

解决xtrabackup备份时出现的socket报错

今天为公司新建的uat数据库备份时,出现了报错,将解决方法整理.做一下备忘: 服务器系统: [[email protected] tmp]# cat /etc/redhat-release  CentOS Linux release 7.3.1611 (Core)  mysql版本号: 报错如下: [[email protected] tmp]# innobackupex  --defaults-file=/etc/my.cnf --user=backup --password=****** -

打开Myeclipse时遇到了如下报错: ‘Building workspace’ has encountered a problem. Errors occurred during the build.

问题描述: 打开Myeclipse时遇到了如下报错: 'Building workspace' has encountered a problem. Errors occurred during the build. 解决方法: 1,关闭当前工作空间,即关闭MyEclipse. 2,找到工作空间如下路径的文件: "/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.genuitec.eclipse.ast.deploy.core.