HashMap的扩容过程

Posted 四猿外

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap的扩容过程相关的知识,希望对你有一定的参考价值。

当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值——即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。

扩容( resize )就是重新计算容量,向 HashMap 对象里不停的添加元素,而 HashMap 对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装入更多的元素。

当然 Java 里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的容量小的数组,就像我们用一个小桶装水,如果想装更多的水,就得换大水桶。

HashMap hashMap=new HashMap(cap);

cap =3, hashMap 的容量为4;
cap =4, hashMap 的容量为4;
cap =5, hashMap 的容量为8;
cap =9, hashMap 的容量为16;

如果 cap 是 2 的n次方,则容量为cap,否则为大于 cap 的第一个2的n次方的数。

以上是关于HashMap的扩容过程的主要内容,如果未能解决你的问题,请参考以下文章

Java HashMap 扩容过程分析

Java8中HashMap扩容算法小计

JDK1.8 HashMap 扩容 对链表(长度小于默认的8)处理时重新定位的过程

Java常见集合的默认大小及扩容机制

HashMap原理 — 扩容机制及存取原理

hashmap底层原理