list删除时java.util.ConcurrentModificationException

Posted 张亚南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了list删除时java.util.ConcurrentModificationException相关的知识,希望对你有一定的参考价值。

 这样写代码时,遇到了上面的异常

        for(Question q:questionList) {
            if(!qIds.contains(q.getQuestionId())){
                questionList.remove(q);
            }
        }

换成下面这种写法就正常了

        for(int k=0;k<questionList.size();k++) {
            if(!qIds.contains(questionList.get(k).getQuestionId())){
                questionList.remove(k);
                k--;
            }
        }

        for(int k=0;k<questionList.size();k++) {
            if(!qIds.contains(questionList.get(k).getQuestionId())){
                questionList.remove(questionList.get(k));
                k--;
            }
        }

 

至于原因,有的博客提到的modCount与size不匹配,此时无心深究

以上是关于list删除时java.util.ConcurrentModificationException的主要内容,如果未能解决你的问题,请参考以下文章

Java中List 删除元素

删除项目时 ListBox List<T> 绑定问题

list删除时java.util.ConcurrentModificationException

list删除时java.util.ConcurrentModificationException

在列表迭代期间从 java.util.List 中删除元素时引发 ConcurrentModificationException? [复制]

在 C# 中枚举时从 List<T> 中删除项目的智能方法