HashMap的初始化容量问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38500014/article/details/86690405

今天阿里提示我的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,会自动扩容

展开阅读全文

没有更多推荐了,返回首页