Java最快的哈希函数

时间:2012-04-22 17:12:37

标签: java hash hash-function

我有一个长度为128个字符的布尔字符串(如“01100..001”)(表示128个数字为0/1)。我在Java中搜索一个高效(快速)的哈希函数,它产生的表示比128位低得多,而且碰撞明显减少。任何人都可以帮助我,有没有这样的哈希函数?有什么建议吗?

3 个答案:

答案 0 :(得分:7)

您是否考虑过使用java.util.BitSet,取决于您正在做什么,它可以更轻松,更有效率? http://docs.oracle.com/javase/6/docs/api/java/util/BitSet.html 它也有.hashCode()方法。

答案 1 :(得分:5)

尝试在Java .hashCode()类上使用String方法,它返回int并且速度非常快。

或者,如果您希望将数据存储在.hashCode()中,则可以在java.util.BitSet上使用BitSet方法作为Pulsar建议。

答案 2 :(得分:1)

如果需要计算字符串的哈希值,只需使用String类的hashCode()方法即可。根据实现情况,可以进行多项优化以快速计算此值。

例如,在OpenJDK String类的实现中,hashCode()方法将值缓存在hash属性中,只需要计算一次。

谁说一个128个字符的字符串有128位的散列? Java中hashCode()方法返回的所有哈希值都是int类型,Java中的ints用32位表示。