對象的哈希值

  任何類均爲Object類的間接子類,所以均繼承方法public int hashCode()該方法返回的值一般是通過將該對象的內部地址轉換成一個整數來實現的。這樣能保證每個對象的哈希碼值不一樣。哈希碼產生的依據:哈希碼並不是完全唯一的,它是一種算法,讓同一個類的對象按照自己不同的特徵儘量的有不同的哈希碼,但不表示不同的對象哈希碼完全不同。

  hash碼的主要用途:在對對象進行散列的時候作爲key輸入,據此很容易推斷出,我們需要每個對象的hash碼儘可能不同,這樣才能保證散列的存取性能。事實上,Object類提供的默認實現確實保證每個對象的hash碼不同(在對象的內存地址基礎上經過特定算法返回一個hash碼)。

  由於對equals()重寫的需要,導致有些時候調用該類的對象的時候,得不到該對象的哈希碼值。所以重寫equals()後,一定也要重寫hashCode().

  取得一個類對象的哈希值的形式

int hashCode = System.IdentityHashCode(Object obj);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章