代碼異常
来源:3-14 删除宠物猫信息
qq_精慕门6417434
2021-02-05 22:35:56
Exception in thread "main" java.util.ConcurrentModificationException
我一開始用增强型for循環來刪除set中的對象
相关代码:
for (Cat abc : set) {
if ("帆帆".equals(abc.getName())) {
set.remove(abc);
}
}问题描述:就抛出如上的異常,但是後面搞著搞着,这个异常又没了,可以正常
输出了,我想问问,这个异常的原因是什么以及怎么解决
1回答
好帮手慕阿慧
2021-02-06
同学你好,
java.util.ConcurrentModificationException这个异常出现的原因是在遍历集合时,对集合中的元素进行了修改。
Java中是不允许一边遍历一遍进行修改集合中的元素,会出现数据的不一致性的问题。对于Set集合,如果删除的是集合中最后一个元素,是不会进行报错的。
而在删除数据后,集合的存储结构就发生变化了,如果再遍历就会出错的。解决方案是:在删除数据后,使用break;语句跳出循环。
在课程后面的内容也有对这个内容的讲解,在视频11:45处。
祝学习愉快~
相似问题