java-tip-HashMap

HashMap的基本查找過程:
先使用key.hashCode()生成哈希值,根據哈希值來肯定key存放的位置
找到key在數組中的位置後,再使用key.equals()方法來找到指定的key。

 

1. 自定義的對象須要知足什麼條件才能做爲HashMap的Key?
    想要做爲HashMap的Key必須知足兩個條件:
   1)  重寫hashCode()方法,一個對象的hashCode()決定對象在Hash表中存放的位置
       注:Object的hashCode()方法是根據對象的地址計算的。
   2)  重寫equals()方法,equals()方法決定Hash表中是否存在這個對象
       注:Object的equals()方法只是比較地址
2. 關於android平臺HashMap的裝載因子和擴容
HashMap雖然提供了一個能夠指定裝載因子的構造函數, 可是在實際的實現中並無使用這個參數
它的裝載因子老是0.75f

 

若是實際中key數量過多,會致使碰撞的hash變多,從而影響查找效率。
當size > capacity * 裝載因子 時,HashMap會進行擴容。

 

HashMap的擴容步驟以下:
1. 申請新的數組,大小爲舊的兩倍
2. rehash -> 將現有的item放到新的hash表中

 

HashMap的擴容是個比較耗時的操做,所以,
咱們在使用HashMap的時候,儘量指定合適的Capacity以免擴容。
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息