有人对哈希表熟悉的么?

2010-07-22 12:35:30 +08:00
 kejinlu
最近在看哈希表的相关内容,写了一篇http://geeklu.com/2010/07/hash-table/
然后也看了看Java的HashMap的实现,知道哈希函数需要将哈希值均匀的分布在table中,
但是一直没搞清楚为何字符窜的hashCode会选择31作为乘法的因子。有人清除么?
7501 次点击
所在节点    Java
12 条回复
Kenyth
2010-07-22 13:04:18 +08:00
不止字符串,Collection的默认实现hashcode也是用的31做乘法然后。。。

至于原因,应该可以搜索到的吧。
kejinlu
2010-07-22 13:07:02 +08:00
我看过了的,提及31为一个素数,且可以通过2的移位运算轻松得到结果,还有就是统计学的了,说对大量的英文单词进行运算,31这个能够使得结果分布均匀。

但是没有找到比较确切的原因。
Olivia
2010-07-22 13:08:19 +08:00
Magic number.
Kenyth
2010-07-22 13:49:29 +08:00
kejinlu
2010-07-22 13:56:10 +08:00
kejinlu
2010-07-22 15:20:34 +08:00
望高人出现。
kejinlu
2010-07-22 18:38:11 +08:00
顶一下。有人清除的么?
kejinlu
2010-07-22 23:01:03 +08:00
看了HashMap的源码,还是记一下。 http://geeklu.com/2010/07/java-hashmap/
Kenyth
2010-07-22 23:12:18 +08:00
与其不断地在这里顶贴,我推荐你把你想知道的非常具体的问题,描述非常清楚地在stackoverflow上问一下,那上面牛人很多,除非你自己也不知道你自己具体想知道什么,而只是泛泛地探索。
kejinlu
2010-07-22 23:16:58 +08:00
我在测试v2ex上的人群,分类。哈哈
greatghoul
2010-10-04 10:13:36 +08:00
AntiGameZ
2010-10-04 10:20:09 +08:00
@greatghoul
汗,看到第一句话:“今天看到吉日嘎拉的一篇关于管理软件中信息加密和安全的文章,感觉非常有实际意义”

看来吉日已经混出头拉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/774

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX