我们在是有foreach或者Iterator遍历list等集合的时候,如果对集合进行了更改,如删除或者增加的时候,这是会有ConcurrentModificationException抛出。
List<String> list = new ArrayList<>();
list.add("123");
list.add("1233");
list.add("1234");
list.add("1235");
for(String aa : list){
if("123".equals(aa)){
list.remove(aa);
}
}
System.out.println(list.toString());
程序输出:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
解决办法:
1,采用for循环遍历就不会出现这样的问题
for(int i=0; i<list.size(); i++){
if("123".equals(list.get(i))){
list.remove("123");
}
}
程序输出:
[1233, 1234, 1235]
2,实现类换成CopyOnWriteArrayList
List list = new CopyOnWriteArrayList<>();