ケースクラスのハッシュコード部分でスカラーと混乱していることを学んでいます。Scala murmurハッシュとJavaネイティブハッシュ
私が見た限り、ケースクラスはtoString、equals、およびhashCodeの自動生成を提供しています。
伝統的な知恵は、Javaハッシュコードがネイティブ実装を使用することです。
しかし、Scalaでは、それはmurmur hash
私の質問を使用しています。
1)ハッシュコードはマシンに依存しているため、Javaにはネイティブのハッシュコードがありますが、スカラがハングを使用している場合、どのようにマシンに依存しませんか?
2)Scalaには通常のクラスとケースクラスがありますが、通常のクラスでも雑音ハッシュを使用していますか?
3)murmurハッシュが実際にポイント1の後に最も速い実装である場合、Javaはまだネイティブ実装を使用していますか?
もし私がこの正しいscalaを理解していれば、それは最良の選択肢だったのでmurmur hashを選んでください。しかし、通常のscalaクラスがデフォルトのハッシュを選ぶのはなぜですか?おそらく互換性のために?カスタムハッシュ対デフォルトのJavaハッシュの線を描くことができません –
デフォルトのハッシングはハッシングではなく、ちょうどメモリアドレスがハッシュコードとして再解釈されます(Javaの場合と同じです)。クラスのどの部分が重要であるかわからないときは、それは賢明です。ある意味でのequalsとhashCodeの定義は、あなたが重要と考えるものを表現します。 –