什麼是基元類型的哈希碼,比如int?例如,int的哈希碼
假設num是一個整數。
int hasCode = 0;
if (num != 0) {
hasCode = hasCode + num.hashCode();
}
什麼是基元類型的哈希碼,比如int?例如,int的哈希碼
假設num是一個整數。
int hasCode = 0;
if (num != 0) {
hasCode = hasCode + num.hashCode();
}
對於int
的hashCode
最自然的選擇是使用int
本身。一個更好的問題是long
的hashCode
使用什麼,因爲它不符合int
大小的哈希碼。 —和所有hashCode
相關問題—的最佳來源應爲Effective Java。
我很好奇長'哈希代碼,並已查找它,它是:'(int)(value ^(value >>> 32));' – 2012-08-09 19:50:23
@platzhirsch是的,這就是它在java.lang中實現的方式.Long',這就是Effective Java推薦的。 – 2012-08-09 19:52:15
@MarkoTopolnik其實我認爲[this](http://download.java.net/openjdk/jdk7/)可能更有用。 – oldrinb 2012-08-09 19:52:46
爲基本類型int
沒有可用hashCode()
方法。
Integer
是包裝類類型和hashcode()
返回int
從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而不是Integer對象持有'整數'值 – MANU 2017-06-05 08:53:06
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
retval中間變量在此並不是真的必要因爲它只被使用一次。 – 2016-06-29 11:02:48
你不能調用原語的方法。雖然它可以自動裝箱,然後作爲一個Integer(或類似的),你會得到'Integer.hashCode'。 – 2012-08-09 19:44:00
在這種情況下,我們可能會更有幫助,並添加hashCodes將用於包裝類的內容。 – 2012-08-09 19:46:00
整數的哈希碼是整數本身。 – 2012-08-09 19:46:23