長さ128文字のブール文字列(「01100..001」など)(128個の0/1を意味します)があります。私は、Javaで効率的な(高速な)ハッシュ関数を探しています。これは、128ビットよりはるかに低い表現を生み出します。誰も私を助けることができる、そのようなハッシュ関数はありますか?なにか提案を ?Javaの最速ハッシュ関数
答えて
Java String
クラスの.hashCode()
メソッドを使用すると、int
が返され、非常に高速です。
BitSet
にデータを保存することをお勧めする場合は、java.util.BitSet
の.hashCode()
メソッドをPulsarが提案するように使用することができます。
私は 'String'を' BigInteger'に最初に変換し、そのために '.hashCode()'メソッドを呼び出すことを除いて言います。しかし、私はあなたが提案したように元の 'String'をハッシュするほうが速いと推測しています。なぜ16バイトを128バイトの 'String'ファイルとして保存したいのかと疑問に思っています。これはスペースの浪費のようです。 – ZeroOne
ありがとうございました。試してみるといいですね。しかし、衝突の可能性を示す文書はありますか? – Arpssss
@ ZeroOne、私はBigIntに変換してからhashcodeを呼び出すことも考えています。なぜなら、衝突が少なくなるからです。 – Arpssss
代わりにjava.util.BitSet
を使用することを検討しましたか?あなたは何をしているのかによって、はるかに簡単で効率的になる可能性がありますか? http://docs.oracle.com/javase/6/docs/api/java/util/BitSet.html .hashCode()
メソッドもあります。
ありがとうございました。試してみるといいですね。しかし、衝突の可能性を示す文書はありますか? – Arpssss
私は気づいていません。私はそれが2004年に改良されたことを知っています(バグパレードを参照してください:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4979028)、ハッシュコードの計算方法をjava doc showもちろん利用可能です。 http://docs.oracle.com/javase/6/docs/api/java/util/BitSet.html#hashCode() –
文字列のハッシュを計算する必要がある場合は、String
クラスのhashCode()
メソッドを使用します。実装に応じて、この値を迅速に計算するための最適化がいくつか行われます。 String
クラスhashCode()
方法のOpenJDKの実装例として
は、hash
属性の値をキャッシュし、一度だけ計算される必要があります。
128文字の文字列に128ビットのハッシュがあると言ったのは誰ですか? JavaのhashCode()
メソッドによって返されるすべてのハッシュは、タイプがint
であり、Javaのintsは32ビットを使用して表されます。
- 1. Javaハッシュ関数
- 2. javaハッシュ関数の衝突
- 3. Cの最小ハッシュ関数?
- 4. Javaのペア独立ハッシュ関数
- 5. ハッシュ最適化Java
- 6. クリプトンパッケージのハッシュ関数のハッシュ
- 7. java/kotlinにjavascriptハッシュ関数を複製
- 8. 最小完璧なハッシュ関数
- 9. 最速ダミー変数変換パッケージ/関数
- 10. 最適なパス関数の高速化
- 11. Pythonハッシュ関数
- 12. ハッシュ関数は
- 13. PHPハッシュ関数
- 14. ファイルホスティングサイトのハッシュ関数
- 15. Javaの変数値(ハッシュ)
- 16. K&Rハッシュ関数
- 17. 暗号ハッシュ関数
- 18. 同じハッシュ関数
- 19. Pythonのラムダ関数のハッシュ
- 20. 行列へのハッシュ関数
- 21. ハッシュ関数の周期性
- 22. C#のDJBX33Xハッシュ関数
- 23. Perlサブ関数のハッシュ
- 24. ハッシュ関数の計算
- 25. IPアドレスのハッシュ関数
- 26. ハッシュのリストを検索する最速の方法
- 27. SSEを使用した指数関数の最速実装
- 28. C++でunordered_map/setのハッシュ関数が高速になっていますか?
- 29. Java言語で使用されるハッシュ関数
- 30. ハッシュ関数djb2にはjavaバージョンがありますか?
128ビット表現で得られるゼロよりも衝突が少ないですか? – eggyal
@eggyal、ありがとう。ニースのコンセプト。それは私を助けてくれるでしょう。 :) – Arpssss
ストリングを使用して128ビットの値を格納するだけでは、ちょっとした過労、記憶の浪費、特にパフォーマンスに気を配っているようです。 – MRalwasser