私はJoshua BlochのEffective Java 2nd Editionを読んでいます。その仕様に応じて自分のhashCodeメソッドによって返された正確な値が含まれ、このような文字列、整数、および日付などのJavaプラットフォームライブラリ、中hashCodeによって返される正確な値は何を意味しますか?
多くのクラス、この段落で
、彼がいることを言及しますインスタンス値のこれは、将来のリリースでハッシュ関数を改善する能力を厳しく制限するので、一般的には良い考えではありません。ハッシュ関数の詳細を指定せずに瑕疵が発見された場合や、より良いハッシュ関数が見つかった場合は、ハッシュ関数によって返された正確な値にクライアントが依存しないことを前提とした次のリリースで変更することができます。
「正確な」値で意味することを誰でも洞察してください。私はString実装クラスを見ても、彼が何を意味するのか理解できませんでした...
ありがとうございました! String.hashCode()
から
これは、 'hashCode()'によって返された値がJavadocで指定されていることを意味します。例えば['String.hashCode()'](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#hashCode())を参照してください。戻り値 –
彼はおそらく次のようなものを意味していました: 's [0] * 31 ^(n-1)+ s [1] * 31 ^(n-2)+ ... + s [n-1]' java.lang.String#hashCodeの[Javadoc](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#hashCode%28%29)に広告されているアルゴリズム。 – Mena
'java.lang.Integer'では、単に"このIntegerオブジェクトが表すプリミティブなint値と等しい "です。 - [こちら](https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#hashCode%28%29)を参照してください。 – Mena