黑马程序员技术交流社区

标题: hashCode()与equals()的作用? [打印本页]

作者: Mr.JUN    时间: 2015-1-23 12:36
标题: hashCode()与equals()的作用?
何时需要覆盖,求大神讲解?
作者: wtjohn    时间: 2015-1-23 14:01
都要覆盖,存入容器时,先运行hashcode, hashcode不一样,直接存入,如果相同,再用equals比较两个对象是否相同
作者: gx_lv    时间: 2015-1-23 14:07
equals()用于判断List集合元素的唯一性。hashcode()和equals()用于判断HashSet集合元素的唯一性
作者: Afridoce    时间: 2015-1-23 14:15
自定义的时候需要
作者: lwj123    时间: 2015-1-23 18:15
equals方法是List集合判断唯一的方法
hashCode,equals是hashSet,HashMap,LinkedHashMap判断数据唯一的方法
        执行的顺序:
                首先先判断hashCode()是否相等
                是:继续判断equals()
                        true:说明元素重复了
                        alse:就直接添加到集合中
作者: yangtaorun    时间: 2015-1-23 18:32
equals是用于比较的
作者: bowen-xiao    时间: 2015-1-23 18:38
wtjohn 发表于 2015-1-23 14:01
都要覆盖,存入容器时,先运行hashcode, hashcode不一样,直接存入,如果相同,再用equals比较两个对象是 ...

感觉 这个解释不错,那么hashcode单独存在有意义么?为什么?
作者: Mr.JUN    时间: 2015-1-23 18:43
lwj123 发表于 2015-1-23 18:15
equals方法是List集合判断唯一的方法
hashCode,equals是hashSet,HashMap,LinkedHashMap判断数据唯一的方法 ...

自定义用到哈希算法时,就需要覆盖hashCode()和equalss()方法吧?
作者: xiaoyi    时间: 2015-1-23 19:42
然后复写equals方法时 它的参数为Object
作者: huyang936    时间: 2015-1-23 21:41
这个得分情况 List 只看 equals,HashSet先看hashCode再看equals
作者: Dragon_Free    时间: 2015-1-23 22:03
那得看你对容器底层的数据结构的了解还有实际的需求。比例这样说吧,Collection中的List吧,ArrayList底层是数组结构,只看元素自己的对比,而对于HashSet吧,底层是哈希表,比较元素时,会先判断两个元素的哈希值 ,如果相同时,再用equals。实际的需求中,看你使用的是哪种数据结构,了解底层才能更好的应用
作者: lwj123    时间: 2015-1-23 22:30
Mr.JUN 发表于 2015-1-23 18:43
自定义用到哈希算法时,就需要覆盖hashCode()和equalss()方法吧?

enen 是的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2