java.util.ConcurrentModificationException 已经百度过,折腾很久还是没想出来!!

问题描述

代码很简单 ,其实就是想测试一下iterator 的用法,而且我在用iterator遍历的时候也没有修改原来集合中的内容。import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class TestList {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubList<String> l = new ArrayList<String>();Iterator it = l.iterator();String s = "abc";for(int i=0;i<10;i++){s+=i;l.add( s);}System.out.println(l);while(it.hasNext()){System.out.println("aa");it.next();}}}运行结果:Exception in thread "main" java.util.ConcurrentModificationExceptionat java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)at java.util.AbstractList$Itr.next(AbstractList.java:343)at TestList.main(TestList.java:34)[abc0, abc01, abc012, abc0123, abc01234, abc012345, abc0123456, abc01234567, abc012345678, abc0123456789]aa

解决方案

补充之前的回答:原因说明:javadoc中写到:如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的集合,则迭代器的行为是不明确的。 你的代码中 用for循环修改了迭代器所指向的集合所以迭代器的行为是不明确的。
解决方案二:
引用Iterator it = l.iterator(); 移到while语句上方就没问题了
解决方案三:
把 Iterator<String> it = l.iterator();这句 放到后面那个while的前面 for循环的后面

时间: 2024-08-29 05:54:50

java.util.ConcurrentModificationException 已经百度过,折腾很久还是没想出来!!的相关文章

java.util.ConcurrentModificationException异常 解决方法

原文:http://blog.sina.com.cn/s/blog_48dc562301000d2b.html 今天写一个程序的时候遇到了java.util.ConcurrentModificationException异常,半天不知道是什么问题,这里举个简单的例子重现一下异常是如何出现的: import java.util.ArrayList; import java.util.Iterator; class User { private String userName, password;

出现 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 这个异

java.util.ConcurrentModificationException 解决方法_OpenStack

 java.util.ConcurrentModificationException 解决方法 在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除. 则使用会报以下异常: Java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$Key

解决java.util.ConcurrentModificationException错误办法

这个异常一般在我们遍历删除集合元素时出现.写了下面这个代码来展示这个异常. [java] import java.util.ArrayList; import java.util.List; public class ExeptionTest { public static void main(String[] args) { List list = new ArrayList(); list.add("a"); list.add("b"); list.add(&q

多线程 java.util.ConcurrentModificationException 问题

问题描述 目标:定义一个Producer类创建Student并添加到studnts集合中,再定义一个Consumer类从studnts集合中取出数据并打印控制台.Producer,Consumer类都实现了Runnable接口.在MainTest类的main方法中创建线程并启动,如下所示:        Producer p = new Producer();        Thread tp1 = new Thread(p);        tp1.start();              

编码-jstl报错,在网上查了很久还是没能解决,求大神帮忙~~~跪谢~~没c币了

问题描述 jstl报错,在网上查了很久还是没能解决,求大神帮忙~~~跪谢~~没c币了 报的错: org.apache.jasper.JasperException: javax.el.ELException: Error reading 'stuname' on type model.StuInformationOne_$$_javassist_1 jsp: <table> <tbody> <c:forEach items="${requestScope.commP

c-链表的一个错误,找了很久也没发现为什么错了。。。

问题描述 链表的一个错误,找了很久也没发现为什么错了... /*随意输入n个数字,作为线性链表,遍历该列表返回输入值最小节点的关键字*/ #include #include #include #include struct example { int input; int keyword; struct example* next; }; typedef struct example EXAMPLE; int main (void) { EXAMPLE* head; EXAMPLE* p; EX

出错-apache总是自动停止,解决了很久也没搞定,求大神出手相助,跪拜!

问题描述 apache总是自动停止,解决了很久也没搞定,求大神出手相助,跪拜! 环境: win2008+wamp apache2.2.21 php5.3.10 mysql5.5.20 每次出错apache日志中都带有这些信息: PHP Warning: PHP Startup: Unable to load dynamic library 'F:/php/wamp/bin/php/php5.3.10/ext/php_pdo.dll' - xd5xd2xb2xbbxb5xbdxd6xb8xb6xa

蓝桥杯 历届试题 公式求值 (想了很久了,想不明白,才来请教的,麻烦各位了)

问题描述 蓝桥杯 历届试题 公式求值 (想了很久了,想不明白,才来请教的,麻烦各位了) 问题描述 输入n, m, k,输出下面公式的值. 其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如下. 输入格式 输入的第一行包含一个整数n:第二行包含一个整数m,第三行包含一个整数k. 输出格式 计算上面公式的值,由于答案非常大,请输出这个值除以999101的余数. 样例输入 3 1 3 样例输出 162 样例输入 20 10 10 样例输出 359316 数据