遍历容器时出现的java.util.ConcurrentModificationException
2010-04-04 21:40
411 查看
今天看别人的一段程序,原来都没有想到会有问题,一运行就报java.util.ConcurrentModificationException的错,下面是程序
看错误的名字貌似是并发修改的原因,上网查了一下,好像明白了一些,还是基础不行啊。我的理解是for (Integer o : a)这种循环方式使用了类似迭代器的机制,在循环的过程中一旦修改了List,造成了迭代器失效,便出现了上面的错误。
这种情况我的解决方式是不通过这种循环方式,而是采用比较傻的方式,也许某些容器效率会降低,但是可以运行,不会报错
但是如果容器不会被修改的情况还是推荐用迭代器,效率会比较高一点,欢迎高手拍砖
ArrayList<Integer> a = new ArrayList<Integer>(); for (int i = 0; i < 10; i++) { a.add(i); } for (Integer o : a) { if (o == 1) { a.add(0); } }
看错误的名字貌似是并发修改的原因,上网查了一下,好像明白了一些,还是基础不行啊。我的理解是for (Integer o : a)这种循环方式使用了类似迭代器的机制,在循环的过程中一旦修改了List,造成了迭代器失效,便出现了上面的错误。
这种情况我的解决方式是不通过这种循环方式,而是采用比较傻的方式,也许某些容器效率会降低,但是可以运行,不会报错
ArrayList<Integer> a = new ArrayList<Integer>(); for (int i = 0; i < 10; i++) { a.add(i); } for (int i = 0; i < a.size(); i++) { if (a.get(i) == 1) { a.add(0); } }
但是如果容器不会被修改的情况还是推荐用迭代器,效率会比较高一点,欢迎高手拍砖
相关文章推荐
- java.util.ConcurrentModificationException---用迭代器遍历Map时删除其中元素出现异
- 遍历集合时出现的异常Exception in thread "main" java.util.ConcurrentModificationException
- 遍历集合时出现的异常Exception in thread "main" java.util.ConcurrentModificationException
- 遍历map出现错误java.util.ConcurrentModificationException
- JAVA中Iterator遍历,添加出现的ConcurrentModificationException异常
- 出现 java.util.ConcurrentModificationException 时的解决办法
- java.util.ConcurrentModificationException 出现的原因和解决办法
- 出现 java.util.ConcurrentModificationException 时的解决办法
- HashMap出现 java.util.ConcurrentModificationException 时的解决办法
- 遍历集合时删除元素,抛出java.util.ConcurrentModificationException的解决办法
- 集合遍历 java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException的异常的出现与解决
- for循环遍历删除报错:java.util.ConcurrentModificationException
- 遍历集合时删除元素,抛出java.util.ConcurrentModificationException的解决办法
- JAVA List 一边遍历一边删除元素,报java.util.ConcurrentModificationException异常
- 再次踩bug:遍历删除list(java.util.ConcurrentModificationException)
- Java中出现java.util.ConcurrentModificationException的原理探究和解决办法
- 关于Map表循环过程删除操作出现的java.util.ConcurrentModificationException 异常
- java.util.ConcurrentModificationException 解决办法(使用迭代器时出现异常)
- java.util.ConcurrentModificationException ,遍历集合并同时修改集合,并发造成的异常解决办法