在對一個對集合進(jìn)行遍歷的時候,不要對集合進(jìn)行add
或者remove
等操作姐呐。
原因:
ArrayList的remove方法只是修改了modCount的值,并沒有修改expectedModCount洋侨,導(dǎo)致modCount和expectedModCount的值的不一致性指厌,當(dāng)next()時則拋出ConcurrentModificationException異常呀忧。因此使用Iterator遍歷集合時蚜点,不要改動被迭代的對象荆虱。
List<MyPost> items = focusQuestions.list;
for (MyPost item : items) {
if (item.isChecked())
items.remove(item);
}
報錯:
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
相關(guān)文章:
java.util.ConcurrentModificationException 出現(xiàn)的原因和解決辦法