HashMap問答

1、什麼是HashMap

HashMap是一個key-value集合,結合了數組和鏈表的優勢,提供快速查詢、新增、修改map節點的功能數組

2、HashMap的繼承關係

3、HashMap數據結構

橙色是一個數組,每一個數組關聯一個Entry鏈表。
下面是一個entry的數據結構,包含hash值,key,value和指向下一個entry的連接安全

hash key value next

4、HashMap查找、添加元素是怎樣的

添加元素put:先對key進行hash,根據hash值定位到數組下標(每一個數組元素對應的是一個entry鏈表),若是無元素則成爲第一個元素,若是有元素則循環鏈表,有key相同的entry則覆蓋,沒有則將新元素放在鏈表頭,並指向原來的第一個元素
查找元素get:先對key進行hash,根據hash值定位到數組下標,而後循環鏈表,找到key相同的entry並返回value數據結構

5、什麼是Hash碰撞

步驟四種put時,若是新增entry定位的數組下標已有元素就發生hash碰撞,由於最好的分配是每一個數組元素只包含一個entry,這樣時間複雜度就是O(1),若是包含多個元素,查找的時候就須要循環鏈表,時間複雜度就是O(n)線程

6、HashMap是線程安全的嗎?

不是,若是多個線程同時put元素,key相同的時候,可能會發生後面的put覆蓋前面的key。3d

7、HashMap怎樣處理null

HashMap容許key、value都爲null,null會存放在索引爲0的數組中blog

相關文章
相關標籤/搜索