public void delList() {
//生成一个Member列表集合
List<Member> members = new ArrayList<>();
//向集合中添加5个对象
for (long i = 1; i < 5; i++) {
Member member = new Member();
member.setId(i);
members.add(member);
}
//删除id为1的Member对象
/**
* **********************************************************
* *******************错误的方式*******************************
* **********************************************************
*/
/**
* 错误原因:
* 使用增强for循环是,如果删除后继续向下循环则会报
* java.util.ConcurrentModificationException
*/
for (Member member : members) {
if (member.getId() == 1) {
members.remove(member);
}
}
/**
* 错误原因:
* 通过简单的遍历方式,在遍历的过程中有可能会漏掉元素
*/
for (int i = 0; i < members.size(); i++) {
Member member = members.get(i);
if (member.getId() == 1) {
members.remove(member);
//删除之后可以添加break直接跳出可以解决 java.util.ConcurrentModificationException 异常 但是不在向下循环了
//break;
}
}
//打印
members.forEach(item -> {
System.out.println(item);
});
/**
* **********************************************************
* *******************正确的方式*******************************
* **********************************************************
*/
//不建议
/**
* 逆向循环,是正确的
*/
for (int i = members.size() - 1; i >= 0; i--) {
if (1 == members.get(i).getId()) {
members.remove(i);
}
}
//建议 使用迭代器的方式正确无误的删除
Iterator<Member> iterator = members.iterator();
while (iterator.hasNext()) {
if (iterator.next().getId() == 1) {
iterator.remove();
}
}
//打印
members.forEach(item -> {
System.out.println(item);
});
}
关于java中列表数据如何优雅删除
最新推荐文章于 2024-06-23 15:11:07 发布