均属于笔记,仅供个人参考,有问题欢迎指正
1,使用普通的for循环删除,会因为指标前移(list的大小发生了变化,索引也在变化,所以会导致在遍历的时候漏掉某些元素),可能会出现删除后数据不准确或者下标越界异常的问题,所以这种方式是达不到效果的.
for (int i =0; i < datas.size(); i++){
if (datas.get(i).isSelect()) {
datas.remove(i);
}
}
2,使用普通的for循环删除,内部调整索引
for (int i =0; i < datas.size(); i++){
if (datas.get(i).isSelect()) {
datas.remove(i);
i--;
}
}
3,使用倒序for循环删除
for (int i = datas.size() - 1; i >= 0; i--) {
if (datas.get(i).isSelect()) {
lists.remove(i);
}
}
4,使用迭代器删除
// 获取集合对应的迭代器,用来遍历集合中的元素的。
Iterator<UserBean> iterator = datas.iterator();
while(iterator.hasNext()){
UserBean user= iterator.next();
if(user.isSelect()){
// 注意: 不能用list的remove方法.
// datas.remove(next);
// 使用迭代器中的remove()方法,可以删除元素.
iterator.remove();
}
}
网友评论