赞
踩
通过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异常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。