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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈洋 中级黑马   /  2013-8-26 11:33  /  1602 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈洋 于 2013-8-26 16:10 编辑

问为什么equals相等hashcode就要相等。
网上说:因为是按照hashCode来访问小内存块,所以hashCode必须相等。
对于这句话不是太明白。有大神出来解惑吗?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

6 个回复

倒序浏览
哈希算法用来提高从集合中查找元素的效率,这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储在哪个区域。

点评

高手回答的是hashcode的作用,和我问的问题,好像不搭边。。。还是非常感谢  发表于 2013-8-26 16:09

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
本帖最后由 刘树弘 于 2013-8-26 12:40 编辑

equals比较对象的内容,如果equals相等,内容就应该相等
hashcode返回对象的内容的特征(比如对象的类型,字符串的长度),内容相等必定特征相等

equals是hashCode相等的充分条件,hashCode相等是equals的必要条件

评分

参与人数 1技术分 +2 收起 理由
黄兴旺 + 2

查看全部评分

回复 使用道具 举报
要把hashcode和equals扯在一起的话,只能有一种情况,那就是元素所存储的集合底层调用是哈希表数据,你所的意思是问为什么equals相等哈希值就相等,那是因为在哈希集合集合中判断元素是否一样先判断哈希值是否相等,在调用equals方法比较是否相等,在这种情况下,equals相等,那么自然而然的哈希值就相等了。我是这么理解的

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
张聪珉 发表于 2013-8-26 13:27
要把hashcode和equals扯在一起的话,只能有一种情况,那就是元素所存储的集合底层调用是哈希表数据,你所的 ...

感谢{:soso_e100:}
回复 使用道具 举报
刘树弘 发表于 2013-8-26 12:38
equals比较对象的内容,如果equals相等,内容就应该相等
hashcode返回对象的内容的特征(比如对象的类型, ...

这样理解也有道理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马