Java Collection 使用迭代器遍历集合时 又同时在删除集合中的数据 程序就会出现并发修改异常的错误
Exception in thread “main” java.util.ConcurrentModificationException (并发修改异常)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1513)
at com.zhong.collection.edit.CollectionEdit.main(CollectionEdit.java:16)
- 报错代码
package com.zhong.collection.edit;import java.util.ArrayList;
import java.util.List;public class CollectionEdit {public static void main(String[] args) {// 删除所有包含 王 的元素List<String> list = new ArrayList<>();list.add("王麻子");list.add("zhong");list.add("王维");list.add("小钟");list.add("小王");list.forEach(x-> {if (x.contains("王")) {list.remove(x);}});System.out.println(list);}
}
- 修改代码
package com.zhong.collection.edit;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class CollectionEdit {public static void main(String[] args) {// 删除所有包含 王 的元素List<String> list = new ArrayList<>();list.add("王麻子");list.add("zhong");list.add("王维");list.add("小钟");list.add("小王");list.removeIf(s -> s.contains("王"));System.out.println(list);}
}