1. 程式人生 > >簡單理解java為什麼要同時重寫equals方法和hashcode

簡單理解java為什麼要同時重寫equals方法和hashcode

一、從集合和資料結構說

      這幾天在部落格上看關於為什麼重寫equals方法的同時也要重寫hashcode方法,越看越糊塗,後來自己仔細一想,本來很簡單的事情為何說的那麼麻煩。現在我來一一說說我的理解。

    在資料結構中我們學習過查詢,但是實踐的比較少。而java集合正是利用了這個查詢

    什麼是查詢?就是給你1個值在成千上萬的記錄中找到他。

    主要有兩種查詢:順序查詢和hash查詢。

     順序查詢:從頭到尾一個一個找唄(java list,包括linkedlist和arraylist, 就是採用這個設計,既然查詢總得比較吧,比較你兩個key相不相等,所以equals方法就產生了)。

     hash查詢:先計算hash值(hashcode方法產生)找到地址,再進行比較(equals方法就產生了),如果不相等就進行衝突處理。由於java採用鏈地址衝突處理,所以從單鏈表不斷比較,直到查到為止。

二、hash查詢

    簡單介紹一下hash查詢。