3

長さ128文字のブール文字列(「01100..001」など)があります(0/1の128個を意味します)。Java で効率的な (高速な) ハッシュ関数を探しています。これは、128 ビットよりもはるかに低い表現を生成し、明らかに衝突が少ないものです。誰でも私を助けることができますか、そのようなハッシュ関数はありますか? なにか提案を ?

4

3 に答える 3

7

代わりにを使用することを検討しjava.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。これは を返し、非常に高速です。

または、データを に保存したい場合は、Pulsar が提案する.hashCode()方法を使用できます。java.util.BitSetBitSet

于 2012-04-22T17:14:44.530 に答える
1

文字列のハッシュを計算する必要がある場合は、クラスのhashCode()メソッドを使用するだけです。String実装に応じて、この値をすばやく計算するためにいくつかの最適化が行われます。

例として、クラスのOpenJDKの実装では、メソッドは属性の値をキャッシュし、1 回だけ計算する必要があります。StringhashCode()hash

そして、128 文字の文字列が 128 ビットのハッシュを持つと誰が言いましたか? hashCode()Java のメソッドによって返されるすべてのハッシュは 型intであり、Java の int は 32 ビットを使用して表されます。

于 2012-04-22T17:27:21.133 に答える