在foreach循环中使用remove报ConcurrentModificationException异常原因
Posted 7-30-onlyone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在foreach循环中使用remove报ConcurrentModificationException异常原因相关的知识,希望对你有一定的参考价值。
在foreach循环中使用remove报ConcurrentModificationException异常原因
我的代码具体是这样的
int dindex=0; int did=getInt("请输入需要删除的学生学号:"); for (Student student:list) if(student.id==did) list.remove(student);
这样会导致remove后,导致list在循环中下标和实际已经被修改后的下标不一致
我自己的解决方案是:
int dindex=-1; int did=getInt("请输入需要删除的学生学号:"); for (Student student:list) if(student.id==did) dindex=list.indexOf(student); if(dindex!=-1) list.remove(dindex); else System.out.println("没有此学生");
记录下标 不改变list本身 等foreach结束后,再删除
以上是关于在foreach循环中使用remove报ConcurrentModificationException异常原因的主要内容,如果未能解决你的问题,请参考以下文章
不要在 foreach 循环里进行元素的 remove / add 操作
不要在foreach循环里进行元素的remove/add操作