- Java code
List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); for (Integer integer : list) { if(integer==3){ list.remove(integer); }
以上这段代码不报错,但是
- Java code
List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); for (Integer integer : list) { if(integer==3){ list.remove(integer); } }
这段代码会报错,为什么
------解决方案--------------------
代码没贴完?
------解决方案--------------------
我没发现任何的不一样啊
你确定有区别么
------解决方案--------------------
。。。其实都报错。for增强。。迭代器遍历。。。检测到迭代器和list里面的count不一致,所以报错了
------解决方案--------------------
NC!
------解决方案--------------------
额 我晕,, 不应该是foreach么? 没仔细看!!
------解决方案--------------------
刚才看了下 会报java.util.ConcurrentModificationException这样的错
在网上收一下有解释
------解决方案--------------------
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (Integer integer : list) {
if(integer==2){
list.remove(integer);
break;
}
}
这样就不会报错了
------解决方案--------------------
呵呵 不过一般不这么写循环的吧,这样写了会被骂的~
------解决方案--------------------
楼上的是怎么写这样的循环
------解决方案--------------------
还真别说,只有3的时候不抱错。关注解释...
------解决方案--------------------
list没有被remove之前modCount为5,remove之后modCount为6,因为这两个一致就抛出了一个runtimeException。不清楚modCount的作用是什么,求解
------解决方案--------------------
- Java code
List<String> strList =new ArrayList<String>(); strList.add("1"); strList.add("2"); strList.add("3"); strList.add("4"); for(String data:strList){ if("3".equals(data)){ strList.remove(data);//remove之前strList的modCount为4,remove之后modCount为5 remove之后没有报错 } }
------解决方案--------------------
http://blog.csdn.net/hanzhen143437/article/details/5567067
这里有解释。看着解释还不错