整天干ssh有点单调,大家来回顾回顾se
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
这里有解释。看着解释还不错