1. 程式人生 > >HashMap底層及使用個人理解

HashMap底層及使用個人理解

strong next ted edm 性能 沖突 好的 鏈表 保存

HashMap原理
  HashMap底層采用數組結合鏈表形式保存,數組中保存的數據Entry,它有四個屬性(key,value,next,hashcode)。我們都知道HashMap采用鍵值對保存數據。
實現流程如下,先用本地方法獲取key的hashcode,再用該數據的hash值與數組長度-1,采用按位與獲得數組的下標,便可以獲取該鍵key所對應的值。

HashMap沖突(jdk中的實現):
  HashMap雖然可以很好的保存,查詢數據,但是可能會發生多個key對應一個hashcode,其采用鏈表的形式保存這樣的數據。
  實現如下:當發生HashMap沖突時,先將新值替換原有的值value。然後將新值Entry中的next指向舊值對應的地址。

HashMap優化使用:
  HashMap子類LinkedHashMap,繼承了HashMap性能優點,在其基礎上進行了改進,增加了排序功能,排序功能有插入時排序和最近訪問排序。
  HashMap兄弟類TreeMap,TreeMap額外實現了SortedMap 接口,不僅可以對鍵進行排序,還可以對其元素便可以進行排序。就其性能來說,采用紅黑樹排序算法,性能很好。

個人推薦:如果要對Map進行排序,可以直接使用該TreeMap 而不是在程序中使用排序算法。重復造輪子,增加開發成本,也可能會成為以後開發的瓶頸。

HashMap底層及使用個人理解