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的主要内容,如果未能解决你的问题,请参考以下文章
list删除时java.util.ConcurrentModificationException
list删除时java.util.ConcurrentModificationException
在列表迭代期间从 java.util.List 中删除元素时引发 ConcurrentModificationException? [复制]