刚开始删除“花花”的时候怎么没有错误

刚开始删除“花花”的时候怎么没有错误

刚开始删除“花花”的时候怎么没有错误,为什么到了删除花花二代就要加break

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

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

2回答
好帮手慕小班 2020-09-03 15:33:22

同学你好,1、同学的说法是正确的,花花二代刚好是集合最后一个元素

    2、相对于花花,多个二代-->同学这样理解也是可以的.

每个Cat对象在添加时,会根据hashCode方法中,对每个属性进行对应的hash值的计算。

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

如上所示,花花二代与花花,不同的对象不同的属性值,最后得到的hash值也不同。比如:

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

祝学习愉快!

  • 嗯嗯,好的,谢谢
    2020-09-03 17:34:12
  • 老师,hash值不一定不同吧

    2021-05-26 17:51:43
  • 同学你好,每一个属性对应的地址值都不一样,所以对应不同属性值的对象地址值也是不一样的。

    祝学习愉快!

    2021-05-26 18:42:48
好帮手慕小班 2020-08-24 11:37:47

同学你好,在课程案例中,删除花花二代并没有报错,而是在删除花花时,报出了错误,这是因为在课程案例中,花花二代正好是最后一个元素。

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

    这里删除花花报错是因为,花花不是集合最后遍历的数据,之后循环会继续执行,这时候就会发生错误。因为删除数据后,集合的存储结构就发生变化了,再遍历肯定会出错的。

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

  • 那这个"花花二代"多运行几次是不是也会报错的呀,HashSet是无序的
    2020-09-03 02:56:16
  • 同学你好,Set集合是无序的,这里无序是指不会记录插入的顺序,但是HashSet存值的时候会根据hashCode()来计算存储的位置,所以并不会出现,多运行几次"花花二代"的位置就会变化的情况。 继续加油 祝:学习愉快~
    2020-09-03 10:19:33
  • 所以hashCode()计算存储的位置,花花二代刚好会是集合最后一个元素(相对于花花,多个二代),是这样吗
    2020-09-03 13:41:04
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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