List循环使用remove()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。QQ讨论群:271934368 https://blog.csdn.net/huangjp_hz/article/details/78548595

小记

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

总结

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

猜你喜欢

转载自blog.csdn.net/huangjp_hz/article/details/78548595