3

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

4

3 回答 3

7

您是否考虑过使用 ajava.util.BitSet代替,这取决于您在做什么,它可能会更容易和更有效?http://docs.oracle.com/javase/6/docs/api/java/util/BitSet.html 它也有一个.hashCode()方法。

于 2012-04-22T17:21:33.043 回答
5

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

或者,如果您更喜欢将数据存储.hashCode()在.java.util.BitSetBitSet

于 2012-04-22T17:14:44.530 回答
1

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

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

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

于 2012-04-22T17:27:21.133 回答