黑马程序员技术交流社区

标题: 关于哈希存储问题 [打印本页]

作者: 徐启坤    时间: 2013-5-14 09:54
标题: 关于哈希存储问题
本帖最后由 徐启坤 于 2013-5-14 13:16 编辑

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

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

作者: 仲伟    时间: 2013-5-14 10:04
你先知道,哈希表计算方法,你就知道你的问题了啊
作者: 王春晓    时间: 2013-5-14 10:06
hashCode方法如果没有被覆写的话,得到的地址值就是对象在内存中的实际存储位置,这个值肯定是不可以重复的,因为一份内存空间肯定不能重叠存放东西。
但是如果覆写了hashCode方法,得到的哈希值就是根据自己指定的方法运算得出的结果,是有可能出现重复的。所以在这种情况下如果出现重复就要使用equals方法来判断对象是否真的相同。
希望这个回答能帮到你!
作者: chensc    时间: 2013-5-14 10:10
学习学习!
作者: pthuakai    时间: 2013-5-14 10:35
hashSet你可以把他理解成一个学校,分很多个教室。你把姓李的放在一个教室,姓张的放一个教室。当姓张的教室里面的1号座位已经被人占了,他会自动往后跳,如果还是被占的,接着往后跳,直到找到到一个空位,让他坐下。这是数据结构里面的算法问题。而姓是算法,按照姓名来分房间。而座位是一个地址值。
作者: 刘胜寒    时间: 2013-5-14 12:10
楼主注意结题啊。。

hash函数是对不同的对象提供一个独一无二的地址值。

作者: 徐启坤    时间: 2013-5-14 13:15
王春晓 发表于 2013-5-14 10:06
hashCode方法如果没有被覆写的话,得到的地址值就是对象在内存中的实际存储位置,这个值肯定是不可以重复的 ...

恩好像理解了,也就是说一般情况下不会出现地址重复的问题了
作者: 殇_心。    时间: 2013-5-14 16:56
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!




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