Java中HashMap的默认负载因子为什么设置为0.75?

0.75这个数字其实是一个时间和空间之间的平衡点。

负载因子决定了什么时候会触发扩容

HashMap的扩容阈值=容量✖️负载因子。

举个栗子:

比如容量是16,负载因子是0.75,这样存到第12个元素的时候就会触发扩容;

那如果负载因子改成0.5,这样存到第8个元素就会触发扩容;

如果负载因子改成1,那这样只有存满16个元素才会触发扩容。

所以,

负载因子如果设置的太低,桶里的元素就会越稀疏,这样虽然查找速度会更快,但是会造成内存空间的浪费;

负载因子如果设置的太高的话,桶里的元素就会越密集,虽然节省空间,但是冲突也会变多,这样查找就会变慢。

0.75是一个折中的值,既不会让数组太过空旷,也不会让链表太长,在大多数场景下都能保持不错的性能。

相关推荐
小成202303202653 小时前
Linux高级02
linux·开发语言
mounter6253 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
camellias_3 小时前
【无标题】
java·tomcat
知行合一。。。3 小时前
Python--04--数据容器(总结)
开发语言·python
咸鱼2.03 小时前
【java入门到放弃】需要背诵
java·开发语言
ZK_H3 小时前
嵌入式c语言——关键字其6
c语言·开发语言·计算机网络·面试·职场和发展
A.A呐3 小时前
【C++第二十九章】IO流
开发语言·c++
椰猫子3 小时前
Java:异常(exception)
java·开发语言
lifewange3 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
cmpxr_4 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法