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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr.JUN 中级黑马   /  2015-1-23 12:36  /  1474 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

何时需要覆盖,求大神讲解?

11 个回复

倒序浏览
都要覆盖,存入容器时,先运行hashcode, hashcode不一样,直接存入,如果相同,再用equals比较两个对象是否相同
回复 使用道具 举报 2 0
equals()用于判断List集合元素的唯一性。hashcode()和equals()用于判断HashSet集合元素的唯一性
回复 使用道具 举报
自定义的时候需要
回复 使用道具 举报
equals方法是List集合判断唯一的方法
hashCode,equals是hashSet,HashMap,LinkedHashMap判断数据唯一的方法
        执行的顺序:
                首先先判断hashCode()是否相等
                是:继续判断equals()
                        true:说明元素重复了
                        alse:就直接添加到集合中
回复 使用道具 举报
equals是用于比较的
回复 使用道具 举报
wtjohn 发表于 2015-1-23 14:01
都要覆盖,存入容器时,先运行hashcode, hashcode不一样,直接存入,如果相同,再用equals比较两个对象是 ...

感觉 这个解释不错,那么hashcode单独存在有意义么?为什么?
回复 使用道具 举报
Mr.JUN 中级黑马 2015-1-23 18:43:59
8#
lwj123 发表于 2015-1-23 18:15
equals方法是List集合判断唯一的方法
hashCode,equals是hashSet,HashMap,LinkedHashMap判断数据唯一的方法 ...

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

enen 是的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马