返回顶部
首页 > 资讯 > 精选 >HashMap加载因子为什么是0.75
  • 672
分享到

HashMap加载因子为什么是0.75

2023-06-16 07:06:26 672人浏览 八月长安
摘要

本篇内容主要讲解“HashMap加载因子为什么是0.75”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HashMap加载因子为什么是0.75”吧!加载因子是哈希表在其容量自动增加之前可以达到多满

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

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

HashMap加载因子为什么是0.75

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

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

  static final float DEFAULT_LOAD_FACTOR = 0.75f;

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

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

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

HashMap加载因子为什么是0.75

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

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

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

我们接下来看看 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

0.0001579

0.00001316

 0.00000094

0.00000006    

more: less than 1 in ten million

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

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

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

--结束END--

本文标题: HashMap加载因子为什么是0.75

本文链接: https://lsjlt.com/news/282677.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HashMap加载因子为什么是0.75
    本篇内容主要讲解“HashMap加载因子为什么是0.75”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HashMap加载因子为什么是0.75”吧!加载因子是哈希表在其容量自动增加之前可以达到多满...
    99+
    2023-06-16
  • HashMap的负载因子初始值是0.75的原因是什么
    这篇文章主要讲解了“HashMap的负载因子初始值是0.75的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HashMap的负载因子初始值是0.7...
    99+
    2024-04-02
  • 怎么理解Java中HashMap底层实现、加载因子、容量值及死循环
    这篇文章主要介绍“怎么理解Java中HashMap底层实现、加载因子、容量值及死循环”,在日常操作中,相信很多人在怎么理解Java中HashMap底层实现、加载因子、容量值及死循环问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-06-16
  • gitee网页加载慢是什么原因
    Gitee是一个基于Git的代码托管平台,由于其提供的免费服务以及稳定的性能,越来越多的开发者选择在该平台上进行代码管理和版本控制。但是,有时你可能会发现在访问Gitee网站的时候,可能会遇到网页加载缓慢的情况,这是令人非常困扰和不舒适的体...
    99+
    2023-10-22
  • hashmap查询时间复杂度为O(1)的原因是什么
    本篇内容介绍了“hashmap查询时间复杂度为O(1)的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!hashmap为什么查询时间...
    99+
    2023-06-20
  • Java中父子类的加载顺序是什么
    今天就跟大家聊聊有关Java中父子类的加载顺序是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 静态 > 非静态当且仅当该类在程序中第一次被 new(是第一次被类加载器...
    99+
    2023-06-20
  • Cassandra的复制因子是什么
    在 Cassandra 中,复制因子(replication factor)是指指定在集群中复制数据副本的数量。复制因子决定了每个数...
    99+
    2024-04-09
    Cassandra
  • 什么是Cassandra的复制因子
    Cassandra的复制因子是指在Cassandra集群中每个数据副本的数量。复制因子的值决定了数据在集群中的复制数量,从而影响数据...
    99+
    2024-04-09
    Cassandra
  • vue页面首次加载缓慢原因是什么
    这篇文章主要介绍了vue页面首次加载缓慢原因是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。第一次打包vue的项目部署到服务器下时,发现...
    99+
    2024-04-02
  • webpack多入口热加载很慢的原因是什么
    小编给大家分享一下webpack多入口热加载很慢的原因是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!之前为公司搭建了套we...
    99+
    2024-04-02
  • 浏览器中css加载失败的原因是什么
    这篇文章主要介绍了浏览器中css加载失败的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇浏览器中css加载失败的原因是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • steam充值页面加载不出来是什么原因
    steam充值页面加载不出来原因有:1、网络连接不稳定导致Steam充值页面无法加载;2、浏览器缓存导致页面加载错误;3、防火墙或安全软件阻止Steam充值页面的加载;4、一些地区可能会限制对Steam充值页面的访问。本教程操作环境:win...
    99+
    2023-07-10
  • vue中什么是路由懒加载?为什么要进行?
    vue中什么是路由懒加载?为什么要进行路由懒加载路由?下面本篇文章带大家了解一下vue中的路由懒加载,希望对大家有所帮助!路由懒加载懒加载本质是延迟加载或按需加载,即在需要的时候的时候进行加载。 首页不用设置懒加载,一个页面加载过后再次访问...
    99+
    2023-05-14
    路由懒加载 Vue
  • css为什么会加载失败
    css会加载失败的原因:1、网络故障引起css加载失败,比如网速慢、空间速度慢等;2、使用link标签引入css样式文件时路径不是正确的或者css代码不兼容;3、HTML页面编码与css编码不同,从而引起css加载失败。具体分析如下:网络原...
    99+
    2024-04-02
  • HTML5预加载是什么
    本篇内容主要讲解“HTML5预加载是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5预加载是什么”吧! 预加载是一种浏览器机制,使用浏览器空闲时间...
    99+
    2024-04-02
  • redis懒加载是什么
    redis懒加载指的是延迟加载,当访问页面时,会把img标签中的src链接设为同一张图片,将其真正的图片地址存储在img标签的自定义属性中,当js监听到该图片元素进入可视窗口时,即将地址存储到src属性中,从而达到懒加载的效果。...
    99+
    2024-04-02
  • 什么是类加载器
    本篇内容主要讲解“什么是类加载器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是类加载器”吧!类加载器简介Java程序被编译器编译之后成为字节码文件(.class文件),当程序需要某个类时,...
    99+
    2023-06-15
  • 什么是react懒加载
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。什么是react懒加载?React懒加载一、懒加载是什么?为什么需要懒加载?懒加载:不会预加载,而是需要使用某段代码,某个组件或者某张图片时,才加载他们(...
    99+
    2023-05-14
    懒加载 React
  • Java基础:为什么hashmap是线程不安全的?
    原因 HashMap 是线程不安全的主要原因是它的内部结构和操作不是线程安全的。下面是一些导致 HashMap 线程不安全的因素: 非同步操作:HashMap 的操作不是线程同步的,也就是说,在多线...
    99+
    2023-09-17
    java
  • 你可知HashMap为什么是线程不安全的
    目录HashMap 的线程不安全HashMap 中的 put() 方法数据的覆盖一数据的覆盖二    HashMap 的线程不安全 HashMap 的线程不安全主...
    99+
    2022-11-13
    HashMap线程 HashMap线程不安全 HashMap线程安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作