List循环使用remove()方法

本文介绍了两种在Java中循环并安全移除List元素的方法,避免了并发修改异常。第一种方法通过复制List来实现,而第二种方法则采用倒序遍历的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小记

有时候敲代码会遇到这种情况,循环一个list,执行完一个后就要移除它,然后继续循环,如果不注意写很容易运行报错:java.util.ConcurrentModificationException。

在阅读《Java编程思想》时,看到一种很好的写法,不由地想记录下来,在这里简称为方法一,另外还有一种常用的方法,简称为方法二,下面是两个方法的代码:

方法一

List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");

if (list.size() > 0){
    for (String s:new ArrayList<>(list)){
        System.out.println(s);
        list.remove(s);
    }
}
/*
    Output : 1
             2
             3
 */

方法二

List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");

if (list.size() > 0){
    for (int i = list.size() - 1; i >= 0; i--){
        System.out.println(list.get(i));
        list.remove(i);
    }
}
/*
    Output : 3
             2
             1
 */

总结

个人更喜欢使用方法一,但是不知道会不会有啥隐患呢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值