HashMap扩容小结

前言

上一篇文章写了有关HashMap的总结,这个写了下HashMap中扩容的问题。

1:当hashmap中的元素越来越多的时候,碰撞的几率也就越来越高,为了提高效率就要对hashMap进行扩容

2:hashMap在扩容非常消耗性能,因为原数组中的数据都复制到新数组中必须重新计算在新数组中的位置,这就是resize();

扩容原理

当hashmap中的元素个数超过数组大小*loadFactor时,就会进行数组扩容

loadFactor的默认值为0.75,也就是说,默认情况下,数组大小为16,那么当hashmap中元素个数超过16*0.75=12的时候,就把数组的大小扩展为2*16=32,即扩大一倍

重新计算每个元素在数组中的位置 问题就解决了。

下面是我在源码中注释的内容,希望对大家有帮助

HashMap扩容小结

HashMap扩容小结

总结

到这我们知道,经过一次扩容处理后,元素会均匀分布在新的map中,访问效率上得到提示,但是在这过程中会消耗许多性能,个人认为尽量避免进行扩容处理,遍历元素所带来的坏处大于元素在桶中均匀分布所带来的好处。有不同观点的欢迎大家留言讨论。

相关文章