java學習 hashCode的計算

2021-09-23 10:37:35 字數 1161 閱讀 8917

一、常見型別的幾個案例

class people

public class test

}

列印輸出結果

10

65-553310500

48690

people@7852e922

2018699554

二、分析

1、integer型別的資料,返回的hash值為資料本身;

2、物件型別的資料,返回的一串字元;

3、string型別的資料,返回一串字元;

三、原始碼的實現

object對hashcode()的方法實現

public native int hashcode();
string 對hashcode()的方法實現

public int hashcode() 

hash = h;

}return h;

}

integer對hashcode()的實現

@override

public int hashcode()

四、了解下string對hashcode的計算

1、在string物件的建立,都是將string資料拆分為char型別    private final char value;

2、對於計算hash值,為了區別"123"和"321"計算hash值一樣的問題,對hash值計算時新增"權重"的思想;

所以對於stirng型別的hash值計算思路:

public class test 

}

查詢ascii碼,我們知道a對應的十進位制為65;b為66;c為67

public int hashcode() 

hash = h;

}return h;

}

他的計算過程為

1、(31*0+'a')     65

2、(31*0+'a')*31+'b'     65*31+66 = 2081

3、((31*0+'a')*31+'b')*31+'c'   2081*31+67=64578

java學習第44天,hashCode

1,當乙個元素存到 hashmap 裡面以後 不要修改元素的內容 hashcode 在計算的時候 可能會使用元素的內容 如果修改了元素的內容的話 hashcode 的值可能就會發生改變 會影響元素的遍歷 2,hashmap 在剛開始建立的時候 預設有 16 的容量 size 獲取到的是當前實際放在h...

JAVA中hashCode的編寫

1 把某個非零常數值,比如17,儲存在乙個叫result的int型別的變數中。2 對於物件中的關鍵域f 指equals方法中考慮的每乙個域 完成以下步驟 a 為該域計算int型別的雜湊碼c i 如果該域是boolean型別,則計算 f 0 1 ii 如果該域是byte char short或者int...

java中hashcode的理解

hashcode 是幹什麼用的?2008年09月29日 星期一 07 32 p.m.首先hashcode是雜湊演算法的一中簡單實現,他是乙個物件的雜湊嗎值。一般和equals一起使用。hashcode也是用來查詢的,如果你學過資料結構就應該知道,在查詢和排序這一章有 例如記憶體中有這樣的位置 0 1...