出现 java.util.ConcurrentModificationException 时的解决办法
原文:https://www.cnblogs.com/error404/archive/2011/11/25/2263671.html
for (int i=0; i<list.size(); i++) { // 只有在这种方式遍历集合时,同时对集合增加、删除才不会影响。
// list.remove(list.get(i));
}
在对一个map进行迭代遍历并删除一些符合条件的键值对的时候,容易出现
java.util.ConcurrentModificationException 这个异常。 Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787) at java.util.HashMap$KeyIterator.next(HashMap.java:823)
解决办法如下:
import java.util.*; public class TestMap { public TestMap() { } public static void main(String[] args) { java.util.Map m = new java.util.HashMap(); m.put("aaa", "lizongbo "); m.put("bbb", " lizongbo"); m.put("ccc", "lizongbo "); m.put("ddd", " lizongbo"); m.put("eee", "lizongbo"); m.put("fff", "lizongbo"); m.put("ggg", "lizongbo"); m.put("adads", "lizongbo"); m.put("dffd", "lizongbo"); m.put("dcxv", "lizongbo"); m.put("lizongbo", "lizongbo"); m.put("ert", "lizongbo"); m.put("544", "lizongbo "); Iterator iterator = m.keySet().iterator(); while (iterator.hasNext()) { String sessionId = (String) iterator.next(); if ("ggg".equals(sessionId) || "lizongbo".equals(sessionId) || "544".equals(sessionId)) { iterator.remove(); //这行代码是关键。 m.remove(sessionId); } } System.out.println(m.get("ggg")); System.out.println(m.get("lizongbo")); System.out.println(m.get("544")); }
最后更新:2017-04-02 06:52:12
上一篇:
天气预报之抓取、解析、存入MYSQL数据库模块实现,不规范(代码)
下一篇:
修正Magento1.6.1.0翻译上的bug,提供补丁包下载
Linux Debugging(四): 使用GDB来理解C++ 对象的内存布局(多重继承,虚继承)
Weblogic常见故障常:JDBC Connection Pools
DockerCon 2017 Day 1 - Keynote 速记
MySQL 备份和恢复
文本文件与二进制文件的编码差别
ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProvider
金融安全资讯精选 2017年第六期:阿里云等3家单位具备CNVD技术组成员单位资格,反欺诈和身份管理是AI安全最热两大创业领域,互金安全负责人的安全建设心得
Git团队协作使用规范 以及一些常用命令详解
强密码和弱密码并没有什么区别?NIST密码安全标准更新:不再建议密码要求混合大写字母、字符和数字
逻辑备份和物理备份简单理解