本文為原創(chuàng)博文,轉(zhuǎn)載請注明出處,侵權(quán)必究!

      每個java程序員都知道,HashMap是java中最重要的集合類之一,也是找工作面試中非常常見的考點,因為HashMap的實現(xiàn)本身確實蘊含了很多精妙的代碼設(shè)計。

  對于普通的程序員,可能僅僅能說出HashMap線程不安全,允許key、value為null,以及不要求線程安全時,效率上比HashTable要快一些。稍微好一些的,會對具體實現(xiàn)有過大概了解,能說出HashMap由數(shù)組+鏈表+RBT實現(xiàn),并了解HashMap的擴容機制。但如果你真的有一個刨根問題的熱情,那么你肯定會想知道具體是如何一步步實現(xiàn)的。HashMap的源碼一共2000多行,很難在這里每一句都說明,但這篇文章會讓你透徹的理解到我們平時常用的幾個操作下,HashMap是如何工作的。

   要先提一下的是,我看過很多講解HashMap原理的文章,有一些講的非常好,但這些文章習(xí)慣于把源代碼和邏輯分析分開,導(dǎo)致出現(xiàn)了大段的文字講解代碼,閱讀起來有些吃力和枯燥。所以我想嘗試另一種風(fēng)格,將更多的內(nèi)容寫進(jìn)注釋里,可能看起來有些啰嗦,但對于一些新手的理解,應(yīng)該會有好的效果。


 

  • HashMap結(jié)構(gòu)

   首先是了解HashMap的幾個核心成員變量(以下均為jdk源碼):

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式