码迷,mamicode.com
首页 > 其他好文 > 详细

在foreach循环中使用remove报ConcurrentModificationException异常原因

时间:2019-08-03 21:54:15      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:删除   class   没有   不一致   tin   mod   int   system   导致   

在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异常原因

标签:删除   class   没有   不一致   tin   mod   int   system   导致   

原文地址:https://www.cnblogs.com/7-30-onlyone/p/11296318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!