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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐启坤 中级黑马   /  2013-5-14 09:54  /  1970 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐启坤 于 2013-5-14 13:16 编辑

毕老师在讲解hashset的时候有提到,hashset存储的是哈希值,就像是地址值,因其中的元素不能重复,所以要判断地址值是否相同,
如果地址值相同的话,再判断相同地址上的对象是否相同。

我想问的是,难道同一个地址上可以存放不同的两个对象吗????有点不是很理解

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

7 个回复

倒序浏览
你先知道,哈希表计算方法,你就知道你的问题了啊
回复 使用道具 举报
hashCode方法如果没有被覆写的话,得到的地址值就是对象在内存中的实际存储位置,这个值肯定是不可以重复的,因为一份内存空间肯定不能重叠存放东西。
但是如果覆写了hashCode方法,得到的哈希值就是根据自己指定的方法运算得出的结果,是有可能出现重复的。所以在这种情况下如果出现重复就要使用equals方法来判断对象是否真的相同。
希望这个回答能帮到你!

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
学习学习!
回复 使用道具 举报
hashSet你可以把他理解成一个学校,分很多个教室。你把姓李的放在一个教室,姓张的放一个教室。当姓张的教室里面的1号座位已经被人占了,他会自动往后跳,如果还是被占的,接着往后跳,直到找到到一个空位,让他坐下。这是数据结构里面的算法问题。而姓是算法,按照姓名来分房间。而座位是一个地址值。
回复 使用道具 举报
楼主注意结题啊。。

hash函数是对不同的对象提供一个独一无二的地址值。
回复 使用道具 举报
王春晓 发表于 2013-5-14 10:06
hashCode方法如果没有被覆写的话,得到的地址值就是对象在内存中的实际存储位置,这个值肯定是不可以重复的 ...

恩好像理解了,也就是说一般情况下不会出现地址重复的问题了
回复 使用道具 举报
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马