1. 程式人生 > >Object 開發中常用的重寫方法總結toString,equals,hashCode,compareTo

Object 開發中常用的重寫方法總結toString,equals,hashCode,compareTo

public int hashCode() 返回該物件的雜湊碼值。支援此方法是為了提高雜湊表(例如 java.util.Hashtable 提供的雜湊表)的效能。 首先,想要明白hashCode的作用,你必須要先知道Java中的集合。   總的來說,Java中的集合(Collection)有兩類,一類是List,再有一類是Set。 這裡就有一個問題了:要想保證Set元素不重複,可兩個元素是否重複應該依據什麼來判斷呢? 這就是Object.equals方法了。但是,如果每增加一個元素就檢查一次,那麼當元素很多時,後新增到集合中的元素比較的次數就非常多了。 也就是說,如果集合中現在已經有n個元素,那麼第n+1個元素加入集合時,它就要呼叫n次equals方法。這顯然會大大降低效率。 於是,Java採用了雜湊表的原理。雜湊演算法也稱為雜湊演算法,是將資料依特定演算法直接指定到一個地址上。如果詳細講解雜湊演算法, 那需要更多的文章篇幅,我在這裡就不介紹了。初學者可以這樣理解,hashCode方法實際上返回的就是物件儲存的實體地址(實際可能並不是)。 這樣一來,當集合要新增新的元素時,先呼叫這個元素的hashCode方法,就一下子能定位到它應該放置的物理位置上。 如果這個位置上沒有元素,它就可以直接儲存在這個位置上,不用再進行任何比較了;如果這個位置上已經有元素了, 就呼叫它的equals方法與新元素進行比較,相同的話就不存了,不相同就雜湊其它的地址。 所以這裡存在一個衝突解決的問題。這樣一來實際呼叫equals方法的次數就大大降低了,幾乎只需要一兩次。