今天在做题的时候看到了这样一个题,问题是输出是什么
import java.util.*;
public class Main{
public static void main(String[] args){
List<String> list = new ArrayList<>();
list.add("null");
list.add("ths");
list.add("null");
for (String s : list) {
if("null".equals(s)){
list.remove(s);
}
}
System.out.println(list);
}
}
我看了这个题,我就感觉输出是[ths],但是答案是报错java.util.ConcurrentModificationException
我也看过使用使用for循环遍历ArrayList进行remove()操作的时候会因为索引的原因发生错误,但是还没有遇到过这个问题,于是便查询相关知识
发现如下
当我们使用增强for循环代码来遍历的时候,上面代码等价于
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("null")