for循环删除:
通过for循环删除有可能会报ConcurrentModificationException错误。
list是一个有序,可重复的集合,每个元素都有自己的角标,迭代删除后可能引起后面的元素角标发生改变。
迭代器删除
List<Student> list = new ArrayList<>();
Iterator<Student> iterator = list.iterator();
while (iterator.hasNext()) {
SendDto next = iterator.next();
if (*****) {
iterator.remove();
*****
break;
}
}
这种使用迭代器遍历、并且使用迭代器的删除方法(remove()) 删除是正确可行的,也是开发中推荐使用的。
如果将上面的iterator.remove()改为list.remove(next)。有可能导致ConcurrentModificationException异常。