私が正しく覚えていれば、Object型のオブジェクトのjavaでのデフォルトのhashCode()の実装は、オブジェクトのメモリアドレスを返すことです。独自のクラスを作成するときは、hashCode()をオーバーライドして、HashMap()などのハッシュ関連のコレクションに挿入するときに正しく動作するようにしたいと読んでいます。しかし、なぜメモリアドレスが悪いですか?Javaのデフォルトハッシュコード()がなぜ悪いのですか?
メモリが不足していて衝突が発生することがありますが、これが問題であることがわかっている唯一のケースは、データのTONSを処理しているメモリがほとんどなく、START Javaのハッシュ関連コレクションは連鎖によって衝突を解決するため(バケットは同じハッシュコード/インデックスに解決された値のリストにリンクします)、パフォーマンスに影響します。
あなたは問題ではありません。 [this](http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java?rq=1)を読むことができます。問題は、平等概念から独立して見ることはできません。 –
何も悪いことはありませんが、他の理由で時々変更する必要があります。 – Affe
デフォルトの 'hashCode()'はメモリアドレスとは関係ありません。このドキュメントでは、メモリアドレスをハッシュコード計算の入力として考えていますが、これは最近のJVMで実装された方法とは異なります。 – Holger