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

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

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

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

举个栗子:

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

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

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

所以,

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

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

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

相关推荐
考虑考虑5 小时前
JDK26中的Map.ofLazy
java·后端·java ee
鶴哥只手遮天8 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天8 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天8 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天8 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天8 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天8 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源