原因:使用iter遍历
查看源码得知expectedModCount是指Iterator现在期望这个list被修改的次数是多少次。是在Iterator初始化的时候将modCount 的值赋给了expectedModCount
而modCount 时List从new开始,记录被修改的次数。当List调用Remove等方法时,modCount++
那么就解释了为什么会报上述异常:
modCount 会随着调用List.remove方法而自动增减,而expectedModCount则不会变化,就导致modCount != expectedModCount,校验失败
list删除报错处理:
public class Test {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
Iterator<Integer> iter = list.iterator();
while (iter.hasNext()) {
Integer a = iter.next();
if (a == 3) {
iter.remove();
}
}
System.out.println(JSONArray.toJSONString(list));
}
list添加报错处理:
public class Test {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
Integer count = 5;
int i = 0;
for (Integer integer : list) {
if (integer == count) {
i += 1;
}
}
if (i == 0) {
list.add(count);
}
System.out.println(JSONArray.toJSONString(list));
}