java中hashCode()在Map中的作用

Thinking.In.Java 筆記 20140526 14:33

1、Map很容易實現,兩個數組相應位置對應就是一個Map了

2、在這種情況下,拿一個key過來如何取得對應的value呢?就是拿這個key和存放key的數組的元素用equals方法一一比較找到key在key數組中的位置,然後取對應的value

3、考慮提升效率,就有了hashCode(),散列算法

4、如何提升的,這樣存儲Map,對於每一對key-value,先通過key的hashCode()算法計算出一個散列值,在一個數組的散列值(剛計算出來的)的位置上,放入這個key-value對,可以用對象打包一下(兩個屬性,一個key,一個value),隨便都行

5、按這種方式存儲Map,這時候拿來一個key,先執行hashCode()方法計算散列值,找到在數組中的位置,然後這個位置上可能有數個key-value對,再用equals方法來找到準確的那個

6、原來通過key找value時,需要線性比較所有的key,利用hashCode()方法比較的會少很多,理想的情況是,所有的key-value平均的分佈在一個數組上

7、現在來看hashMap,應該就是一個數組上,每個位置最多隻有一個key-value對,但是並不一定是數組中所有的位置都有一個key-value對,這個情況是最理想的情況,一般情況是,有許多空的位置,這一條是自己懂了上面的,自己悟出來的,僅供參考

8、現在來考慮通過key找一個hashMap中value的過程,首先,調用hashCode()方法計算散列值,然後equals比較相同,看各種視頻也沒明白到這份上,還是理解機理比較重要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章