91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HashMap加載因子為什么是0.75

發布時間:2021-10-28 17:57:39 來源:億速云 閱讀:433 作者:iii 欄目:編程語言

本篇內容主要講解“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加載因子為什么是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

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”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渭南市| 沙坪坝区| 弥渡县| 黑水县| 泾川县| 南华县| 昆明市| 烟台市| 平谷区| 苗栗县| 霍山县| 芒康县| 高平市| 南康市| 武宣县| 长治县| 闽清县| 永城市| 富民县| 天津市| 古交市| 洪洞县| 呼伦贝尔市| 财经| 武安市| 东城区| 扎鲁特旗| 昌图县| 宝坻区| 亚东县| 舞阳县| 包头市| 龙州县| 余姚市| 漾濞| 金阳县| 泌阳县| 松溪县| 嵩明县| 五原县| 商水县|