千家信息网

HashMap加载因子为什么是0.75

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"HashMap加载因子为什么是0.75",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"HashMap加载因子为什么是0.75"吧!加载因子
千家信息网最后更新 2025年11月07日HashMap加载因子为什么是0.75

本篇内容主要讲解"HashMap加载因子为什么是0.75",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"HashMap加载因子为什么是0.75"吧!

加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。

对于使用链表法的散列表来说,查找一个元素的平均时间是 O(1+a)。因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费。

如果你看过源代码,你会发现在初始条件下,HashMap 在时间和空间两者间折中选择了 0.75

/** * The load factor used when none specified in constructor. */  static final float DEFAULT_LOAD_FACTOR = 0.75f;

但是为什么一定是 0.75?而不是 0.8,0.6,这里有一个非常重要的概念:泊松分布。

相信大家都学过概率论,对这个大名鼎鼎的定律感觉应该是既熟悉又陌生。本篇文章的重点不是为大家普及概率论知识,这里就简单介绍下。

泊松分布是最重要的离散分布之一,它多出现在当X表示在一定的时间或空间内出现的事件个数这种场合。

举个简单的例子,假如你一个老板,新开张了一家酒店,这个时候应该如何准备一天所用的食材呢?

准备的太多,最后卖不掉这么多菜只能浪费扔掉;准备不够,又接不了生意。但是你有很多同行和朋友,他们会告诉你很多经验。

比如把一天分成几个时间段,上午、下午、晚上每个时间段大概会来多少个客人,每一桌大概会点几个菜。综合下来,就可以大致知道在一天的时间内,估计出需要准备的食材数量。

我们接下来看看 HashMap 源码注释的原话:

Ideally, under random hashCodes, the frequency of nodes in bins follows a Poisson distribution with a parameter of about 0.5 on average for the default resizing threshold of 0.75, although with a large variance because of resizing granularity. Ignoring variance, the expected occurrences of list size k are (exp(-0.5) * pow(0.5, k) /factorial(k)).

0: 0.60653066
1: 0.30326533
2: 0.07581633
3: 0.01263606
4: 0.00157952

5: 0.0001579

6: 0.00001316

7: 0.00000094

8: 0.00000006

more: less than 1 in ten million

翻译过来说的是,在理想情况下,使用随机哈希码,节点出现的频率在 hash 桶中遵循泊松分布。

对照桶中元素个数和概率的表,可以看到当用 0.75 作为加载因子时,桶中元素到达 8 个的时候,概率已经变得非常小,因此每个碰撞位置的链表长度超过 8 个是几乎不可能的,因此在链表节点到达 8 时才开始转化为红黑树。

到此,相信大家对"HashMap加载因子为什么是0.75"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

因子 时间 空间 概率 准备 元素 泊松 重要 个数 内容 时候 时间段 朋友 概率论 节点 哈希 学习 更深 稀疏 陌生 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 教育物联网大数据平台软件开发 王牌战争什么服务器零件多 数据库命令行建库建表 福建电商软件开发工具 网络安全和等保有什么区别 知域互联网科技 哈尔滨网络安全监察电话 如何在命令行窗口执行服务器程序 我的世界游戏服务器多少钱 通榆天气预报软件开发 互联网大会周鸿祎科技报国 手机服务器没响应怎么搞 徐汇区品质数据库服务商报价行情 腾讯游戏平台服务器下载 服务器不定时重启 与数据库技术相关的知识 东南大学轨道交通网络安全 佛山家政软件开发报价 服务器桌面应用程序已关闭 odbc数据库管理程序 软件开发专业已经饱和了 好点子网络技术有限公司 久其软件招股说明书软件开发 微信图片 服务器 工作表中的数据库操作个人体会 数据库的读写分离是什么 宁夏oa软件开发公司案例 lol重连无法连接服务器 计算机网络技术腾讯大数据 电力企业网络安全履职报告
0