List循环使用remove()方法

小记

有时候敲代码会遇到这种情况,循环一个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
 */

总结

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值