ConcurrentModificationException
出现这个异常应该都是线程方面的问题,具体是什么问题,我这时候还是不知道
反正有一种情况会出现这种问题
遍历集合是进行采用不合适的方式进行增加和删除会出现这个异常
1.异常java.util.ConcurrentModificationException
2.实例demo
@Test
public void testCommonFor(){
for (Map.Entry<Integer, String> entry : MAP.entrySet()) {
if(entry.getKey()==1){
// 删除
System.out.println("del:" + entry.getKey());
MAP.remove(entry.getKey());
}else{
System.out.println("show:" + entry.getKey());
}
}
}
@Test
public void testListForRemove(){
List<String> strList = new ArrayList<String>(
Arrays.asList("java","c++","physon","javascript","PHP")
);
for (String s : strList) {
if(s.equalsIgnoreCase("PHP")){
boolean remove = strList.remove(s);
System.out.println("是否删除成功"+remove);
}
}
}
以上两种情况都会出现这种问题
3.解决方案
遍历集合的时候使用迭代器的方式进行遍历,如果没有更好的方法
也可以使用stream和lambda表达式的方式进行遍历