代碼異常

代碼異常

Exception in thread "main" java.util.ConcurrentModificationException

我一開始用增强型for循環來刪除set中的對象

相关代码:

	for (Cat abc : set) {
if ("帆帆".equals(abc.getName())) {
set.remove(abc);
}
}问题描述:就抛出如上的異常,但是後面搞著搞着,这个异常又没了,可以正常
输出了,我想问问,这个异常的原因是什么以及怎么解决


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿慧 2021-02-06 10:00:45

同学你好,

java.util.ConcurrentModificationException这个异常出现的原因是在遍历集合时,对集合中的元素进行了修改。

Java中是不允许一边遍历一遍进行修改集合中的元素,会出现数据的不一致性的问题。对于Set集合,如果删除的是集合中最后一个元素,是不会进行报错的。

而在删除数据后,集合的存储结构就发生变化了,如果再遍历就会出错的。解决方案是:在删除数据后,使用break;语句跳出循环。 

在课程后面的内容也有对这个内容的讲解,在视频11:45处。

http://img1.sycdn.imooc.com//climg/601df84a096485c308880342.jpg

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师