老师您看一下我下面这两张截图讲述的情况 是什么原因呀?

老师您看一下我下面这两张截图讲述的情况 是什么原因呀?

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

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

2回答
好帮手慕阿慧 2020-07-03 16:19:58

同学你好,

1、使用增强for循环遍历,在删除元素后不能再继续遍历了,因为删除元素之后底层代码中expectedModCount!=modCount,就会抛出java.util.ConcurrentModificationException异常。

2、第一种图片删除没有报错是因为在遍历最后一个元素的时候,if条件才成立,删除元素之后for循环结束。而第二张图片在删除完元素后还会继续遍历,所以报错。

同学可以在for循环中添加break;语句结束循环。

参考代码如下:

http://img1.sycdn.imooc.com//climg/5efeea26098d8c8902760116.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 枢九 #1
    老师我把整个代码删除后重新添加了之前的数据 再次删除想要删除的学号 还是报错
    2020-07-03 16:39:18
  • 好帮手慕阿慧 回复 提问者 枢九 #2
    同学你好,同学添加break;语句了吗,如果还是报错,建议同学贴一下完整代码,方便老师检查。祝:学习愉快~
    2020-07-03 17:01:49
慕丝1539783 2020-07-03 16:08:50

试想一下,H里有三个对象,for循环就会执行三次。

第一张图的时候,id为1的学生,刚好是H的最后一个,删除后,不影响for循环次数。

但是第二张图,id为2的学生,不是H的最后一个,看你右边的输出,id为2的学生应该是在第一位的。

第一次循环的时候,就把id为2的学生删了,这个时候H就剩下两个元素,但是for循环本来要执行三次的,第三次循环的时候,本来要取出H里第三个元素,但是现在H就剩2个元素,所以就会报错。

  • 提问者 枢九 #1
    谢谢你 我来理解下 好复杂的感觉 刚刚把数据还原重新写for循环 居然还会这种错误
    2020-07-03 16:38:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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