成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HashMap加載因子為什么是0.75?轉化紅黑樹閾值為8?

開發 后端
加載因子是哈希表在其容量自動增加之前可以達到多滿的一種尺度,它衡量的是一個散列表的空間的使用程度,負載因子越大表示散列表的裝填程度越高,反之愈小。

 [[338576]]

正文

加載因子是哈希表在其容量自動增加之前可以達到多滿的一種尺度,它衡量的是一個散列表的空間的使用程度,負載因子越大表示散列表的裝填程度越高,反之愈小。

 

對于使用鏈表法的散列表來說,查找一個元素的平均時間是 O(1+a)。因此如果負載因子越大,對空間的利用更充分,然而后果是查找效率的降低;如果負載因子太小,那么散列表的數據將過于稀疏,對空間造成嚴重浪費。

如果你看過源代碼,你會發現在初始條件下,HashMap 在時間和空間兩者間折中選擇了 0.75

  1. /** 
  2. * The load factor used when none specified in constructor. 
  3. */ 
  4.  
  5. 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 時才開始轉化為紅黑樹。

本文轉載自微信公眾號「程序員大帝」,可以通過以下二維碼關注。轉載本文請聯系程序員大帝公眾號。

 

責任編輯:武曉燕 來源: 程序員大帝
相關推薦

2020-02-12 18:55:24

負載因子初始值為什么

2020-07-09 07:00:00

HashMap

2022-05-27 08:18:00

HashMapHash哈希表

2021-03-14 10:24:21

HashMap負載初始值

2020-09-17 07:37:09

紅黑樹數據結構

2019-10-12 08:36:48

Java程序員數據結構

2009-12-11 10:02:46

Linux內存管理

2020-03-11 08:40:51

紅黑樹平衡二叉B樹

2016-12-08 11:01:39

紅黑樹Java

2024-11-07 15:36:34

2020-11-05 09:03:32

紅黑樹面試數據

2020-10-09 06:56:55

紅黑樹動圖二叉樹

2024-03-22 12:29:03

HashMap線程

2020-11-05 13:12:47

紅黑樹

2019-08-22 09:22:44

數據結構二叉搜索樹

2020-05-27 12:45:52

HashMapJava加載因子

2021-08-16 12:32:37

HashMap八股文面試

2022-06-10 08:17:52

HashMap鏈表紅黑樹

2020-05-06 16:41:36

紅黑樹二叉查找樹

2023-03-31 08:24:29

數據結構算法數目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线免费观看 | h视频在线播放 | 91精品国产欧美一区二区成人 | 一区二区三区欧美在线观看 | 国产成人自拍一区 | 成人午夜电影在线观看 | 女同久久 | 久草.com | 亚洲欧洲成人 | 亚洲成人免费视频在线观看 | 韩国理论电影在线 | 国产日韩欧美一区 | 一区二区免费看 | 亚洲精品白浆高清久久久久久 | 在线观看中文字幕一区二区 | 国产精品毛片久久久久久久 | 成人在线精品 | h片免费在线观看 | 欧美精品在线一区二区三区 | 成人区一区二区三区 | 国产xxxx岁13xxxxhd | 欧美日韩精品中文字幕 | 亚洲97 | 日韩美女爱爱 | 狠狠ri| 一区二区三区四区日韩 | 久久中文字幕视频 | 久久久久久高潮国产精品视 | 全免费a级毛片免费看视频免 | 天天久久 | 亚洲欧美精品久久 | 日韩快播电影 | 99精品在线| 天天草草草 | 真人女人一级毛片免费播放 | 欧美二区在线 | 免费国产一区二区 | 中文字幕高清av | 国产精品免费一区二区三区四区 | 免费的色网站 | 国产高清一二三区 |