なぜ日指定文字列になります。hashCode()の実装は?
-
20-09-2019 - |
質問
があるようで継続についての議論であるか否かに依存するのは安全で、現在の実施 String.hashCode()
なので、技術的に言えば、保証の仕様(Javadoc).
- なぜ日の指定
String.hashCode()
"を実施中。 - うーんに頼る特定の実施のhashCode()?
- なぜ日が怖いので、空が落ちる場合
String.hashCode()
変更した。こう説明すること#2)
解決
これはこれまで、データベース、ファイル、または任意の他の記憶媒体に出て永続化される場合であろう)ハッシュコード(の特定の実装に依存する理由。データは、ハッシュアルゴリズムが変更されたときに読み戻された場合の悪いことの(TM)が起こるでしょう。ハッシュが持続されているデータと「今」の間で変化していたので、あなたは、より多くの困ったことにそのハッシュによって何かを見つけることができないことを予期しないハッシュの衝突が発生し、そして可能性があります。
実際には、ほとんど=あまりにもポイント#3を説明している)。
ポイント#1の理由は、「相互運用性を可能にするために」である可能性があります。ハッシュコードの実装がロックダウンされている場合、データがかなり安全にジャワの異なる実装間で共有することができます。すなわち、指定されたオブジェクトのハッシュは、常に実装の同じかかわらずになります。
他のヒント
実装があり、の元String
クラス以降に変更。私が思い出すならば、それだけですべての16日(?)の文字が「長い」文字列のハッシュに使用されたことにするために使用ます。
Javaのそれ以降のバージョンの間、あるいは異なるベンダーのランタイム間のシリアル化の相互運用性を促進するために指定されている可能性があります。私は、プログラマが直接hashCode()
の特定の実装に依存すべきではない、同意するが、それは潜在的にのシリアル化されたコレクションのの多くを破る可能性が変えます。
所属していません StackOverflow