出现 java.util.ConcurrentModificationException 时的解决办法

简介:

原文:http://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"));
   } 





相关文章
|
2月前
|
Java
IDEA Error:java: Compilation failed: internal java compiler error 解决办法
IDEA Error:java: Compilation failed: internal java compiler error 解决办法
|
Java Linux 计算机视觉
全网首发:Could NOT find JNI (missing: JAVA_AWT_INCLUDE_PATH) 解决办法
全网首发:Could NOT find JNI (missing: JAVA_AWT_INCLUDE_PATH) 解决办法
202 0
|
3月前
|
存储 安全 前端开发
Java中的String类与StringBuilder、StringBuffer的比较:缺点与解决办法
Java中的String类与StringBuilder、StringBuffer的比较:缺点与解决办法
54 0
|
3月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
|
3月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,10个定位解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
|
6月前
|
Java Spring
【Java异常】idea 报错:无效的目标发行版:17 的解决办法
【Java异常】idea 报错:无效的目标发行版:17 的解决办法
547 0
|
7月前
|
Oracle 关系型数据库 Java
java处理oracle的Clob字段类型的坑和2种解决办法
java处理oracle的Clob字段类型的坑和2种解决办法
|
8月前
|
Java API
关于 Caused by: java.lang.NoClassDefFoundError: com/alipay/api/AlipayApiException 解决办法
关于 Caused by: java.lang.NoClassDefFoundError: com/alipay/api/AlipayApiException 解决办法
|
9月前
|
JSON JavaScript Java
Windows server中java使用phantomjs+echarts-convert生成图表,图片中的中文乱码 解决办法
我这里是用java的 Runtime.getRuntime().exec 调用命令行执行phantomjs加echarts-convert生成柱状图的命令,本来在本地处理的挺成功的,放到服务器上后生成的图片中的中文都是乱码,百度到的基本上都是linux上乱码,让安装字体。
|
10月前
|
应用服务中间件
报错java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.问题出现原因,及解决办法
报错java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.问题出现原因,及解决办法
104 0