代碼異常

来源: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处。

http://img.mukewang.com/climg/601df84a096485c308880342.jpg

祝学习愉快~

0

0 学习 · 16556 问题

查看课程