1、HashMap的数据结构是”链表散列”,具体如下:
2、两个参数:initialCapacity 、loadFactor
其中initialCapacity 决定了上图所示的table的被初始创建的长度,当然这还不是初始长度,初始长度是大于initialCapacity 的最小的2的n次方,(为什么不能直接用initialCapacity作为初始长度呢?待会会分析到2的n次方的table长度的好处,一是可以优化取模的计算,如何优化待会分析。二是散列均匀,其实这就是取模的好处了)。
而loadFactor*初始长度就是hashmap的扩容阈值,至于为什么要扩容,那是因为要避免上图的链表过长。
源代码如下: