1、如下图为java8 hashmap的结构,jdk 8 之前,其内部是由数组+链表来实现的,而 jdk 8 对于链表长度超过 8 的链表将转储为红黑树。
2、基本概念,threshold
3、基本概念,loadFactor
4、如果用户没有传入initialCapa罕铞泱殳city 和loadFactor这两个参数,会使用默认值initialCapacity默认为16,loadFactory默认为0.75
5、hashmap有很多种构造函数,如大家所熟知,第一个构造函数:HashMap():构建一个初始容量为 16,负载因子为 0.75 的 HashMap。
6、第二个构造函数HashMap(int initialCapacity):构建一个初始容量为 initialCapacity,负载因子为 0.75 的 HashMap。
7、第三个构造函数HashMap(int initialCapacity, float loa蟠校盯昂dFactor):以指定初始容量、指定的负载因子创建一个 HashMap。
8、其中tableSizeFor实现,传入的容量无论是处于任何范围,都会被变成比该值大并且比最近的一个 2 的 n 次幂小一的值。