ハッシュコードの衝突を処理するために Java がデフォルトで使用する手法はどれですか? それは別のチェーンですか、それとも異なるプラットフォームの JVM 実装に依存していますか?
1 に答える
0
javadoc で説明されているように:
合理的に実用的である限り、クラス Object によって定義された hashCode メソッドは、個別のオブジェクトに対して個別の整数を返します。(これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装手法は JavaTM プログラミング言語では必要ありません。)
したがって、JVM がこの戦略を使用して hashCode() を実装する場合、大量のヒープ スペースがあり、非常に不運でない限り、衝突は発生しません。
とはいえ、HashMap でキーとして使用されるほとんどのクラスがメソッドをオーバーライドするため、ObjecthashCode()
は実際にはあまり重要ではありませんhashCode()
。
于 2013-07-17T10:33:41.887 に答える