hashmap的put方法詳解


今天面試到map的put方法,參考https://blog.csdn.net/weixin_38480293/article/details/79405352

HashMap

首先呢

它是一個集合類,非線程安全,key、value(鍵值)對存儲格式。常見的api有put,get,size,remove等方法

在此呢介紹一下jdk1.8中的hashmap.put方法,

我們在使用put方法的時候會傳進key和value參數

在我們將這兩個參數傳入后,

第一步,我們的put方法會去判斷這個hashmap是否為null 或者長度是否為0,

若為null或者長度為0 則新建一個(這也是平時在編程過程中需要經常注意的細節),

第二步,就用到了我們這個key值啦,put方法會根據這個key計算hash碼來得到數組的位置,

(這里需要解釋一下,我們的hashmap默認是由一個數組加鏈表組成的)

得到位置后當然是繼續判斷這個數組下標的值是否為null,

為null 自然是直接插入我們的value值,else

第三步,判斷key是否為null,當key!=null我們就可以覆蓋value值,else if

第四步,判斷數組后面跟着的這個鏈是否為樹(TreeNode),是樹呢,我們傳入的值就會按照key,value的格式存入了,else

第五步,不是樹就是鏈表,那么put方法就會遍歷這個鏈表,

第六步,在遍歷的時候呢我們會判斷這個鏈表的長度是否大於8,大於呢就會將這個鏈表轉換為樹,再按照key,value的格式存入

第七步,小於則會判斷鏈表中的key!=null,若kay!=null則覆蓋,key==null我們的value就會插入

最后一步為判斷擴容,當數組容量超過最大容量時就會擴容一倍(即二進制的進位)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM