关于hashCode与equals

关于hashCode与equals

视频中的讲解不理解,可否老师重新详细再讲解一下

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

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

1回答
好帮手慕珊 2019-07-15 13:46:49

你好!将数据添加到集合Set中,会判断两个对象是否相等,而比较的依据就是使用equals()方法。

那么hashCode()方法用来做什么?这里其实用了一种算法,使用hashCode可以让存储和查询都更加方便。就像视频中演示一样,hashCode值相同的数据会放到一个桶里,这个桶可以看成是内存中的 一片空间,里面的每个元素都具有相同的hashCode值。这样在查询时,就会比较快捷,因为先会查询数据在哪个桶里(也就是那一片区域),然后再从这片区域的数据中查询就可以了,一下子就缩短了查询范围。

hashCode和equals是难点,建议同学多看一下视频,体会一下他们的使用。

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

  • 提问者 无限精彩 #1
    hashCode里面代码是什么意思
    2019-07-15 22:15:36
  • 好帮手慕小班 回复 提问者 无限精彩 #2
    同学你好,这里可以这样来理解,hashCode方法中的代码,是通过算法来对哈希值计算并且赋值给hash字段,计算方法就是-->31为权,每一位属性的值进行计算,用自然溢出来等效取模,最后得到这个对象的hash值,这里同学不用深入学习,只需要理解hashCode方法类似于分类的作用,比如:当我们向一个集合中添加多个对象,集合会首先调用这些对象的hashCode方法,计算出他们的hash码,这样就可以直接定位它所存储的位置。 若这个地方没有其他元素,则直接保存。 若该处已经有元素存在,就调用equals方法来匹配这两个元素是否相同, 相同则不存,不同则散列到其他位置。 这样处理,当我们存入大量元素时就可以大大减少调用equals()方法的次数,极大地提高了效率。 所以hashCode在上面扮演的角色为寻域(寻找某个对象在集合中区域位置),也就是分类的作用哦!这里同学理解就可以了哦! 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-07-16 11:04:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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