alt

1.初始化容量:首先会对人为传入的初始化容量做出判断,如果这个初始化容量小于0或者大于最大容量,则会分别抛出异常;

2.如果负载因子小于等于0或者负载因子不是一个数字,抛出异常

3.之后分别为成员变量赋值为传入的值,其中初始化容量使用tablesizefor方法;

4.(jdk1.8中的方法) alt

这个地方表示n无符号右移三位,并且和n进行或运算

此处方法的作用为:返回一个大于且最靠近容量的2的n次方的数;(采用位移的方法);如果初始化容量为0,那么n为-1.那么就直接返回临界值为1,否则会判断n是否大于最大容量,大于则返回一个最大容量为临界值,否则返回n+1作为临界值threshold;

此方法的解释: alt