更新時間:2022-01-05 10:58:44 來源:動力節點 瀏覽1470次
HashMap是java集合框架中高性能的數據結構之一。無論數據有多大,HashMap幾乎都能為最頻繁的操作——插入和檢索——提供恒定的時間性能。這就是為什么HashMap是需要更快檢索和更快插入操作的大數據的首選。有兩個因素會影響HashMap的性能。一個是負載系數,另一個是初始容量。在構建HashMap時,您必須非常謹慎地選擇這兩個因素 目的。在這篇文章中,我們將看看 HashMap 中的初始容量和負載因子,看看它們如何影響HashMap的性能。
HashMap的容量 是哈希表中的桶數。初始容量是HashMap創建時的容量 。所述的默認初始容量HashMap中為2 4,即16.的容量HashMap中每次它達到閾值的時間加倍。即容量增加到 2 5 =32, 2 6 =64, 2 7 =128..... 當達到閾值時。
負載因子是決定何時增加HashMap容量的度量。默認負載系數為 0.75f。
HashMap的閾值是當前容量和負載因子的乘積。
閾值 =(電流容量)*(負載系數)
例如,如果創建的HashMap初始容量為 16,負載因子為 0.75f,則閾值將為,
閾值 = 16 * 0.75 = 12
也就是說,將第 12 個元素(鍵值對)添加到HashMap后,HashMap的容量從 16 增加到 32 。
每當HashMap達到其閾值時,就會發生重新散列。重新散列是創建具有新容量的新HashMap對象并將所有舊元素(鍵值對)重新計算其散列碼后放入新對象的過程。這個重新散列的過程既耗費空間又耗費時間。因此,您必須通過記住預期元素(鍵值對)的數量來選擇初始容量,以便重新散列過程不會過于頻繁地發生。
在選擇負載因子時,您還必須非常小心。根據HashMap文檔,0.75f 的默認負載因子總是在空間和時間方面提供最佳性能。例如,
如果您選擇負載因子為 1.0f,則在填充 100% 的當前容量后進行重新散列。這可能會節省空間,但會增加現有元素的檢索時間。假設如果您選擇負載因子為 0.5f,則在填充 50% 的當前容量后進行重新散列。這將增加重新散列操作的數量。這將在空間和時間方面進一步降低 HashMap。
因此,在選擇HashMap對象的初始容量和負載因子時必須非常小心。選擇初始容量和負載因子,以便最大限度地減少重新散列操作的數量。
通過上述介紹,相信大家對HashMap初始容量計算方法已經有所了解,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java基礎教程,里面有更豐富的知識在等著大家去學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習