JAVA中hashCode的編寫

2021-08-22 20:09:17 字數 931 閱讀 7917

1、

把某個非零常數值,比如17,儲存在乙個叫result的int型別的變數中。

2、對於物件中的關鍵域f(指equals方法中考慮的每乙個域),完成以下步驟:

a、為該域計算int型別的雜湊碼c: i、

如果該域是boolean型別,則計算(f ? 0 : 1)。

ii、如果該域是byte、char、short或者int型別,則計算(int)f。

iii、

如果該域是long型別,則計算(int)(f ^ f ( f >> 32 ) )。

iv、如果該域是float型別,則計算float.floattoinitbits( f )。

v、如果該域是double型別,則計算double.doubletolongbits( f )得到乙個long型別的值,再執行步驟iii。

vi、如果該域是乙個物件引用,並且該類的equals方法通過遞迴呼叫equals的方式來比較這個域,則同樣對這個遞迴呼叫hashcode。如果要求乙個更為複雜的比較,則為這個域計算乙個規範表示,然後針對這個正規化表示呼叫hashcode。如果這個域為null,則返回0或者其他常數。

vii、

如果該域是乙個陣列,則把每個元素當作單獨的域來處理。也就是說,遞迴地應用上述規則,對每個重要的元素計算乙個雜湊碼,然後根據步驟b中的做法把這些雜湊碼組合起來。

b、按照下面的公式,把上面步驟的c組合到result中:

result = 17 * result + c;

3、返回result。

4、寫完後測試是否相等的例項具有相同的雜湊碼。

apache commons lang

裡面有封裝

org.apache.commons.lang.builder.hashcodebuilder

public class person 

}

java中hashcode的理解

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

Java中的hashcode方法

參考與學習 旨在通過這篇文章把現在我明白的 未來我可能忘記的以及混淆的,寫清楚。hashcode方法 該方法定義在object類中,是native方法 哦我去 其他囉嗦的我不想寫了 不懂直接去看上面兩篇部落格 果然!點一 equals與 的關係和區別 object類中定義的equals方法,就是使用...

java學習 hashCode的計算

一 常見型別的幾個案例 class people public class test 列印輸出結果 10 65 553310500 48690 people 7852e922 2018699554二 分析 1 integer型別的資料,返回的hash值為資料本身 2 物件型別的資料,返回的一串字元 ...