java中hashCode函數的作用

來源:互聯網
上載者:User

hashcode方法返回該對象的雜湊碼值。

hashCode()方法可以用來來提高Map裡面的搜尋效率的,Map會根據不同的hashCode()來放在不同的位置,Map在搜尋一個對象的時候先通過hashCode()找到相應的位置,然後再根據equals()方法判斷這個位置上的對象與當前要插入的對象是不是同一個。

所以,Java對於eqauls方法和hashCode方法是這樣規定的:

1、如果兩個對象相同,那麼它們的hashCode值一定要相同;
2、如果兩個對象的hashCode相同,它們並不一定相同
------------------------------------------------

上面說的對象相同指的是用eqauls方法比較。

要正確的實現Map裡面尋找元素必須滿足一下兩個條件:
(1)當obj1.equals(obj2)為true時obj1.hashCode()   ==   obj2.hashCode()必須為true
(2)當obj1.hashCode()   ==   obj2.hashCode()為false時obj.equals(obj2)必須為false
-----------------------------------------------

現在試想這樣一種情況,現在有個數組,這個數組中有1000個元素,這些元素都是不相同的,你現在要再向裡面插入一個元素,如果你現在只有equals方法,那麼你就得比較1000次,但是你現在有了hashcode,你只需要將新元素通過hashcode,得到一個值,然後將這個新元素與原來1000個元素中hashcode相等的元素進行equal(這時你equal的次數遠遠比1000次小的多),如果equal出有相等的,那麼就說明這1000個中已經有與新元素相等的元素了。先使用hashcode,再使用equal,將大大最佳化執行效率!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.