今天阿里提示我的map应该定义一个初始化容量值,如下图
提示为默认值16即可,于是乎询问过度娘后得知
1-HashMap底层以数组+链表+树来存储数据(java8)
2-HashMap默认16个bucket数组
3-如果new HashMap<>(19),bucket数组为32,也就是2的5次幂,因为19大于2的4次幂,小于2的5次幂,以大的值为自动扩容值,且容量一定是2的次幂
4-HashMap 在第一次put的时候开辟bucket数组占用内存,而不是new的时候
5-HashMap在put的元素达到容量乘负载因子的时候,默认16*0.75,会自动扩容