版权声明:本文为博主原创文章,未经博主允许不得转载。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
*/
总结
个人更喜欢使用方法一,但是不知道会不会有啥隐患呢~