半夜思考, 爲何建議重寫 equals() 方法時, 也要重寫 hashCode() 方法

我說的半夜, 並非真正的半夜, 指的是在我一我的的時候, 我會去思考一些奇怪的問題.html

要理解 hashCode() 須要理解下面三個點:htm

  • hash契約
  • 哈希衝突
  • 哈希可變

第一點: hash 契約指的是兩個相等的對象, 必須具備相同的哈希碼 [ 逆命題不成立 ]對象

第二點: 哈希衝突指的是兩個不一樣的對象具備相同的 hash 值get

第三點: 哈希可變指的是 hashCode 並不保證在不一樣的應用中執行中獲得相同的結果博客

以上三點來自於這篇博客 [ 關於 hashCode() 你須要瞭解的 3 件事 ]hash

下面寫一個例子, 展現若是不重寫 hashCode() 方法會致使的問題, import

 

 

 

 

未完待續.方法

相關文章
相關標籤/搜索