A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码详解:

         注意:        ==只比较地址值,地址值跟哈希值没有关系!
               
                哈希值(哈希码值) 指的是通过hashCode()方法获取的值,跟地址值没有关系。
                只不过默认的hashCode()方法内部得到的结果是通过地址值生成的,如果我们重写了就按照我们重写的方式生成哈希值!


        1、第一步通过比较hashCode的值
                目的:如果两个对象的hashCode的值不相同,那么他们肯定不是同一个对象,
                所以不再需要比较后面的内容,直接添加该元素即可
        2、那么为什么需要后续的比较
                原因:因为如果两个对象的内容不同,hashCode的值还是有可能相同的。
                        举例:几个哈希值都是8的不同字符串
                        'GA8Mfaaa', 'e4R5Blaa', 'Y92RLlaa', 'sCvEytaa', 'ydDspvaa',
                        'ofLCCCaa', 'uemC0Daa', 'CbgFKKaa', 'd0XRbNaa', 'hUzU9Saa'
        3、为什么需要k = e.key) == key这一步的比较?
                原因:提高效率,因为如果这个时候比较的是用一个对象,hashCode的值肯定相同。
                那么如果直接走equals()方法进行比较,代码较多,而同一个对象==比较,结果肯定为true,
                就不用再走equals()方法了。
        4为什么需要key.equals(k)这一步的比较?
                如果对象的hashCode值相同,但内容相同不同(查看上面的举例),就不能够被添加,所以需要这一个进行内容的比较!

评分

参与人数 1黑马币 +10 收起 理由
某某 + 10 很给力!

查看全部评分

3 个回复

倒序浏览
:victory:学习!!
回复 使用道具 举报

嗯嗯,讲这个的时候不是很理解啊
回复 使用道具 举报
加油!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马