首页 新闻 赞助 找找看

java异常处理

0
[已解决问题] 解决于 2017-05-23 09:14
 1 import java.util.ArrayList;
 2 
 3 public class ExceptionTest1 {
 4 
 5     public static void main(String[] args) {
 6         
 7         ArrayList<Integer> al = new ArrayList<Integer>();
 8         for (int i = 0; i < 10; i++) {
 9             al.add(new Integer(i));
10         }
11         
12         for(Integer i:al){
13             System.out.println(i);
14 //            if(i.equals(new Integer(5))){
15 //                al.remove(i);
16 //            }
17         }        
18         System.out.println(al);        
19     }
20 }

去掉注释符后程序为何出现异常??(理解原因)

curry萌的主页 curry萌 | 菜鸟二级 | 园豆:208
提问于:2017-05-21 16:13
< >
分享
最佳答案
0

foreach遍历其实是Iterator,hasNext,next的简写,在每次进入遍历的方法时都会进行迭代器内部修改次数检查,而你的remove方法执行时修改了modCount的值,导致和expectedModCount的值不一致而报错。

foreach语句中不要删除arraylist的元素,一定要修改的话,就用Iterator遍历,并用Iterator的remove方法删除。

奖励园豆:5
JRay | 初学一级 |园豆:74 | 2017-05-21 20:15
其他回答(4)
0

数组遍历过程中不可以操作的,骚年

aiaigerui | 园豆:202 (菜鸟二级) | 2017-05-21 16:22
0

拿迭代器去做你的删除操作就可以了。

Daniel Cai | 园豆:10424 (专家六级) | 2017-05-21 17:06
0

用iterator遍历可以remove

thinkam | 园豆:202 (菜鸟二级) | 2017-05-21 19:50
0

搜索一下fast fail,或者debug一下代码,你就会发现问题发生的具体原因的

狼爷 | 园豆:1204 (小虾三级) | 2017-05-21 22:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册