HashMap實作了Map接口,繼承AbstractMap。其中Map接口定義了鍵映射到值的規則,而AbstractMap類提供 Map 接口的骨幹實作,以最大限度地減少實作此接口所需的工作,其實AbstractMap類已經實作了Map。
我們知道在Java中最常用的兩種結構是數組和指針引用。實際上HashMap是一個“連結清單散列”,如下是它資料結構:

從上圖我們可以看出HashMap底層實作還是數組,隻是數組的每一項都是一條鍊。其中參數initialCapacity就代表了該數組的長度。下面為HashMap構造函數的源碼://jdk7把有些過程方法put的時候去做了,在讀寫解析上會展現。
此段代碼做了一些變量指派和參數初始化,早期JDK給table指派也是在構造器中的,即每次建立一個HashMap時,都會初始化一個table數組。table數組的元素為Entry節點。。
代碼中很多思想用到了數學裡的一些概念,為了性能優化資料配置設定平均和合理性的保證。譬如數組大小啥的,都用2的指數來玩,這方面不是很懂,就不獻醜了。
下面的get代碼比較好了解就不解釋了。