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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾_强 中级黑马   /  2012-5-12 18:03  /  1488 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

个人觉得HashCode是集合类中的特殊存在,在用Hashtable、HashMap、HashSet、LinkedHashMap等时才要注意hashcode,但仍有个小问题。

如果覆盖了equals()方法的话,则必须要覆盖hashCode()方法。这是为什么?反之,如果是覆盖了hashCode()方法,可以不用覆盖equals()方法。这又是怎么判断的,有点晕。请指教。

1 个回复

倒序浏览
因为元素(引用数据类型的)要存入MAP集合中时要先判断该元素的HashCode值是否相等,再通过判断equals方法判断元素内容是否相同。
若HashCode值不相等、不用再判断元素内容再是否相等、元素直接存入集合。
若HashCode值相等、然后内容再不相等的话,元素存入集合。
若HashCode值相等、然后内容再相等的话,元素不存入集合。因为map集合不允许重复元素存在。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马