异常问题解决

异常问题解决

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextNode(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at com.imooc.set.case1.TestCat.main(TestCat.java:74)


代码:

    for(Cat cat:set){
            if("花花二代".equals(cat.getName())){
                set.remove(cat);
                System.out.println(cat);
            }
        }
        System.out.println("删除后花花二代的数据:");
        for(Cat cat:set){
            System.out.println(cat);
        }

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

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

1回答
irista23 2018-10-28 11:20:42

增强型for循环不能删除元素。原因:由于增强for循环底层调用的是迭代器的next和hasnext方法遍历的,移除元素后,就无法预知到元素的位置。解决办法:可以把要移除的元素统一添加到一个集合里,再使用List<T>的removeAll()统一移除。

  • 提问者 auhdisahda #1
    为什么讲师的代码可以通过,也是这样的
    2018-10-28 13:44:32
  • 好帮手慕珊 回复 提问者 auhdisahda #2
    如果刚好删除的是集合中的最后遍历的元素,删除完元素后集合不再继续遍历就没问题,否则就报错。所以我们一般不建议在循环中删除。祝学习愉快!
    2018-10-29 09:32:07
  • 同问,为什么老师在视频教程里的代码是可以跑通的?
    2018-12-11 14:25:43
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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