黑马程序员技术交流社区

标题: 关于hash值的问题 [打印本页]

作者: 樊志伟    时间: 2013-11-26 18:48
标题: 关于hash值的问题
本帖最后由 樊志伟 于 2013-11-26 18:56 编辑

hash值是什么?毕老师讲day04-02的视频中讲数组的时候这么说,
int arr[] = {3,6,5,1,8,9,67};
System.out.prinln(arr);
此处打印的是arr的hash值,是arr数组的内存存放地址,毕老师的意思是不是说hash值就是内存地址?
但是,在day14-12视频中讲HashSet的时,相同的hash值可以存放两个不同对象,我糊涂了,hash值到底是什么意思?同一地址上可以有两个对象??求大神指导。。

作者: freehiker    时间: 2013-11-26 19:32
本帖最后由 freehiker 于 2013-11-26 19:34 编辑

是内存地址,但严格意义上来说,因为hashCode()被覆盖,所以并不是真正的内存地址。还有就是,hashset中,先是看hashcode,若hashcode,再用equals比较值是否相同,若相同则会存储失败。
作者: 樊志伟    时间: 2013-11-26 19:38
freehiker 发表于 2013-11-26 19:32
是内存地址,但严格意义上来说,因为hashCode()被覆盖,所以并不是真正的内存地址。还有就是,hashset中, ...

嗯,但是我的疑问就是,为什么在同一个地址上可以有多个对象?
作者: freehiker    时间: 2013-11-26 19:44
樊志伟 发表于 2013-11-26 19:38
嗯,但是我的疑问就是,为什么在同一个地址上可以有多个对象?

我觉得这可以通过现实世界去理解,一个班级里有好多学生一样




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