V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kejinlu
V2EX  ›  Java

有人对哈希表熟悉的么?

  •  
  •   kejinlu ·
    kejinlu · 2010-07-22 12:35:30 +08:00 · 7500 次点击
    这是一个创建于 5270 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在看哈希表的相关内容,写了一篇http://geeklu.com/2010/07/hash-table/
    然后也看了看Java的HashMap的实现,知道哈希函数需要将哈希值均匀的分布在table中,
    但是一直没搞清楚为何字符窜的hashCode会选择31作为乘法的因子。有人清除么?
    12 条回复    1970-01-01 08:00:00 +08:00
    Kenyth
        1
    Kenyth  
       2010-07-22 13:04:18 +08:00
    不止字符串,Collection的默认实现hashcode也是用的31做乘法然后。。。

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

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

    看来吉日已经混出头拉
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1632 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:50 · PVG 00:50 · LAX 08:50 · JFK 11:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.