【发布时间】:2012-03-10 23:18:11
【问题描述】:
从书CLRS(《算法导论》)中,有几种散列函数,如mod、multiply等。
Java 使用什么散列函数将键映射到槽?
我看到这里有一个问题Hashing function used in Java Language。但它没有回答问题,我认为该问题的标记答案是错误的。它说 hashCode() 可以让你为 Hashtable 做自己的散列函数,但我认为这是错误的。
hashCode()返回的整数是Hashtble的真正key,然后Hashtable使用散列函数对hashCode()进行散列。这个答案意味着Java给你一个机会给Hashtable一个散列函数,但是不,这是错误的。 hashCode() 给出真正的键,而不是散列函数。
那么 Java 到底使用什么哈希函数呢?
【问题讨论】:
-
@SLaks, 所以“int index = (hash & 0x7FFFFFFF) % tab.length;”是真正的散列函数吗?
-
您可能会发现这个 Stackoverflow 问题答案:[帮助链接][1] [1]:stackoverflow.com/questions/13825546/a-faster-hash-function
标签: java algorithm hashtable hash