我有一个长度为 128 个字符的布尔字符串(如“01100..001”)(表示 0/1 的 128 个数字)。我在 Java 中寻找一个高效(快速)的散列函数,它产生的表示比 128 位低得多,而且显然冲突更少。任何人都可以帮助我,有没有这样的哈希函数?有什么建议吗?
问问题
3882 次
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.BitSet
BitSet
于 2012-04-22T17:14:44.530 回答
1
如果需要计算一个字符串的哈希值,只需使用类的hashCode()
方法即可String
。根据实现,为快速计算此值进行了多项优化。
例如,在OpenJDK的String
类实现中,该hashCode()
方法缓存hash
属性中的值,并且只需要计算一次。
谁说 128 个字符的字符串具有 128 位的哈希值?Java 中方法返回的所有哈希hashCode()
都是 类型int
,Java 中的 int 使用 32 位表示。
于 2012-04-22T17:27:21.133 回答