Intなどのプリミティブ型のハッシュコードとは何ですか?
たとえば、numがintergerであったとしましょう。
int hasCode = 0;
if (num != 0) {
hasCode = hasCode + num.hashCode();
}
hashCode
のint
の場合、最も自然な選択はint
自体を使用することです。より良い質問は、hashCode
サイズのハッシュコードに収まらないため、long
のint
に何を使用するかです。そのための最良のソース(およびすべてのhashCode
関連の質問)は、 Effective Java です。
Integer.class
ソースコード:
/**
* Returns a hash code for this {@code Integer}.
*
* @return a hash code value for this object, equal to the
* primitive {@code int} value represented by this
* {@code Integer} object.
*/
public int hashCode() {
return value;
}
ここで、value
は整数の値です。
プリミティブ型int
のhashCode()
メソッドはありません。
Integer
はWrapperクラスタイプであり、hashcode()
はint
を返します
Java.lang.Integer.hashCode()
メソッドは、int
のプリミティブ値のハッシュコード値を返しますが、Integer
オブジェクトとして表されます。
/**
* Returns a hash code value for an Integer,
* equal to the primitive int value it represents.
*/
public class IntegerDemo {
public static void main(String[] args){
Integer i = new Integer("20");
System.out.println("Value = " + i.hashCode());
}
}`
結果:
値= 20
ソースリンク: http://www.tutorialspoint.com/Java/lang/integer_hashcode.htm