本文主要是介绍HashMap defaultLoadFactor = 0.75和泊松分布没有关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
很多人说HashMap的DEFAULT_LOAD_FACTOR = 0.75f是因为这样做满足泊松分布,这就是典型的半知半解、误人子弟、以其昏昏使人昭昭。实际上设置默认load factor为0.75和泊松分布没有关系,随机哈希的存放数据方式本身就是满足泊松分布的。
java8及以上版本中开头这一段的注释,是为了解释在java8 HashMap中引入Tree Bin(也就是放数据的每个数组bin从链表node转换为red-black tree node)的原因。
一、二项分布
二项分布就是重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率p在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从0-1分布。
两个重点:
- 每次试验独立:第n次试验不受n-1次试验的影响,也不影响n+1次试验;
- 结果有且只有两个,并且互相对立:要么成功,要么失败,成功的概率+失败的概率=1;
至于二项分布图的绘制,也就是做n次试验,期望成功k次的概率分布。根据二项分布函数,你只需要知道试验总次数n、期望成功的次数k,以及每次试验成功的概率p,即可很快的求出成功k次的概率。
二、泊松分布
泊松分布: 是离散随机分布的一种,通常被使用在估算在 一段特定时间/空间内发生成功事件的数量的概率。
泊松分布是二项分布p趋近于零、n趋近于无穷大的极限形式,泊松分布的概率质量函数如下图。
这个概率质量函数在HashMap的注释中也出现了。
三、注释中load factor和泊松分布的关系
接第二部分HashMap中的注释截图。其中也给出了泊松分布的概率质量函数公式,除此之外还要重点关注划线的需要翻译的部分。注释原文如下。
Ideally, under random hashCodes, the frequency of nodes in bins follows a Poisson distribution(http://en.wikipedia.org/wiki/Poisson_distribution) with
这篇关于HashMap defaultLoadFactor = 0.75和泊松分布没有关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!