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

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

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

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

举个栗子:

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

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

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

所以,

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

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

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

相关推荐
躺平大鹅5 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者6 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺6 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart7 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP8 小时前
MyBatis-mybatis入门与增删改查
java
孟陬11 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌11 小时前
一站式了解四种限流算法
java·后端·go
华仔啊12 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java
也些宝13 小时前
Java单例模式:饿汉、懒汉、DCL三种实现及最佳实践
java