當前位置:成語大全網 - 書法字典 - Hashmap底層實現原理

Hashmap底層實現原理

hashmap的底層實現原理是SortedMap接口可以根據鍵值對其保存的記錄進行排序,默認值是鍵值的升序,也可以指定壹個排序比較器。當叠代器用於遍歷TreeMap時,得到的記錄是超序的。

如果使用排序映射,建議使用TreeMap。使用TreeMap時,鍵必須在構造TreeMap時實現Comparable接口或傳入自定義比較器,否則將在運行時引發java.lang.ClassCastException類型的異常。

Hashtable是壹個遺留類,很多映射的常用函數和HashMap類似,只是繼承了Dictionary類,線程安全,任何時候只有壹個線程可以寫Hashtable。

在結構實現上,HashMap的實現方式是:數組+鏈表+紅黑樹(JDK1.8加紅黑樹)。

擴展數據

從源代碼中可以看到,HashMap類中有壹個非常重要的字段,就是Node[]表,也就是hash bucket數組。Node是HashMap的內部類,它實現了映射。進入界面。本質上是壹個映射(鍵值對),除了K和v,還包括hash和next。

HashMap是使用哈希表存儲的。為了解決沖突,哈希表采用了鏈地址的方法來解決問題。簡而言之,鏈地址法是數組和鏈表的結合。每個數組元素上都有壹個鏈表結構。當數據被散列時,獲得數組下標,並將數據放在相應下標元素的鏈表中。

如果哈希桶數組很大,即使是再差的哈希算法也會很散。如果哈希桶數組數組很小,再好的哈希算法也會有更多的碰撞,所以需要權衡空間成本和時間成本。其實就是根據實際情況確定哈希桶數組的大小,並在此基礎上設計好哈希算法,減少哈希碰撞。