[Java] Hashmap的內部實現


原始數據結構

    在記錄Hashmap的內部實現以前 先複習下 學校裏面學過的一下基本數據結構吧。java

    數組

        在簡單不過了,在課堂學習的時候,學的最多的就是 數組的尋址和插入了,和java 中的數組沒兩樣,從空間和時間的計算角度看,數組是一個空間優於時間的一種數據結構
算法

    鏈表

        在學完數組以後,老師必定介紹過能夠快速插入的數據結構那就是鏈表啦,每一個節點用 Next的來作連接啦。
數組

    二叉樹

        在學完鏈表以後,老師又教了一種看似高端的數據結構, 那就是二叉樹啦,也就是所謂的紅黑樹,它的優點在於節點數量達到必定級別後檢束數度要大於鏈表。數據結構

Hash表

HashMap基於Hash算法,咱們經過put(key,value)存儲,get(key)來獲取。當傳入key時,HashMap會根據 key.hashCode()計算出hash值,根據hash值將value保存在bucket裏。當計算出的hash值相同時怎麼辦呢,咱們稱之爲 Hash衝突,HashMap的作法是用鏈表和紅黑樹存儲相同hash值的value。當Hash衝突的個數比較少時,使用鏈表,不然使用紅黑樹。學習



------------------TBD----------------------
spa

相關文章
相關標籤/搜索