長さ128文字のブール文字列(「01100..001」など)があります(0/1の128個を意味します)。Java で効率的な (高速な) ハッシュ関数を探しています。これは、128 ビットよりもはるかに低い表現を生成し、明らかに衝突が少ないものです。誰でも私を助けることができますか、そのようなハッシュ関数はありますか? なにか提案を ?
3 に答える
代わりにを使用することを検討しjava.util.BitSet
ましたか? 何をしているかによっては、はるかに簡単で効率的になりますか? http://docs.oracle.com/javase/6/docs/api/java/util/BitSet.html.hashCode()
メソッドもあります
。
.hashCode()
JavaString
クラスでメソッドを使用してみてくださいint
。これは を返し、非常に高速です。
または、データを に保存したい場合は、Pulsar が提案する.hashCode()
方法を使用できます。java.util.BitSet
BitSet
文字列のハッシュを計算する必要がある場合は、クラスのhashCode()
メソッドを使用するだけです。String
実装に応じて、この値をすばやく計算するためにいくつかの最適化が行われます。
例として、クラスのOpenJDKの実装では、メソッドは属性の値をキャッシュし、1 回だけ計算する必要があります。String
hashCode()
hash
そして、128 文字の文字列が 128 ビットのハッシュを持つと誰が言いましたか? hashCode()
Java のメソッドによって返されるすべてのハッシュは 型int
であり、Java の int は 32 ビットを使用して表されます。