黑马程序员技术交流社区

标题: 哈希值和哈希表 [打印本页]

作者: 夏晓彤    时间: 2013-3-10 18:28
标题: 哈希值和哈希表
本帖最后由 夏晓彤 于 2013-3-10 18:31 编辑

1 对象的地址值是哈希值吗?
2 如果是应该每个对象的哈希值都不同啊,在哈希标称,毕老师讲当哈希值相同的时候,在做判断,判断对象是否相同,我的疑问就来了,既然哈希值相同,对象不就是同一个吗,还有必要做2次比较吗
有张毕老师讲课的截图左边的是哈希值,右边的是对象的地址值,按老师说的问题1应该是对啊,

11.jpg (13.24 KB, 下载次数: 5)

11.jpg

作者: 移动小坦克    时间: 2013-3-10 23:30
问题1 :不是,
HASH 是散列表的基础计算方法,Java 内置了 hash 的支持,
java.lang.Object 默认是通过对象在内存的地址计算出来的,也就是对象的地址值不是哈希值。
而哈希值是通过对象的地址值计算的
问题2:
尽管每个对象的地址值不同,但是它们的哈希值有可能相同,
哈希算法内部我也没研究过,但是应该是用地址值套一个公式,来获得的。
那么就有可能得出相同的哈希值。
比如假设地址值是x.  而哈希算法的内部是x%2,那么就有可能很多对象的哈希值都相同
当然,哈希内部没这么简单。
所以总之尽管地址值不同,但是有可能哈希值相同。





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