Java中HashMap的初始容量設(shè)置方式
根據(jù)阿里巴巴Java開發(fā)手冊上建議HashMap初始化時設(shè)置已知的大小,如果不超過16個,那么設(shè)置成默認(rèn)大小16:
集合初始化時, 指定集合初始值大小。
說明:
HashMap使用HashMap(int initialCapacity)初始化
正例:
initialCapacity = (需要存儲的元素個數(shù) / 負(fù)載因子) + 1。注意負(fù)載因子(即loader factor)默認(rèn)為0.75, 如果暫時無法確定初始值大小,請設(shè)置為16(即默認(rèn)值)。
反例:
HashMap需要放置1024個元素,由于沒有設(shè)置容量初始大小,隨著元素不斷增加,容量7次被迫擴(kuò)大,resize需要重建hash表,嚴(yán)重影響性能。
而對于為什么負(fù)載因子是0.75,答案可以在《數(shù)據(jù)結(jié)構(gòu)與算法分析 Java語言描述》的散列章節(jié)中找到
Java HashMap的指定初始值大小和自動擴(kuò)容HashMap指定初始值大小指定初始值大小應(yīng)為2的冪。
如果指定的初始值不是2的冪,則HashMap的容量為大于指定初始值的2的冪;如果不指定,容量默認(rèn)為16。
HashMap自動擴(kuò)容當(dāng)HashMap的鍵值對個數(shù)大于容量的75%時,HashMap的容量擴(kuò)大一倍。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Ajax引擎 ajax請求步驟詳細(xì)代碼2. JS語法也可以有C#的switch表達(dá)式3. JSP實時顯示當(dāng)前系統(tǒng)時間的四種方式示例解析4. python 利用toapi庫自動生成api5. 多級聯(lián)動下拉選擇框,動態(tài)獲取下一級6. 詳解Struts2中對未登錄jsp頁面實現(xiàn)攔截功能7. 老生常談.NET中的 COM 組件8. CSS3+Js實現(xiàn)響應(yīng)式導(dǎo)航條9. CSS3實例分享之多重背景的實現(xiàn)(Multiple backgrounds)10. ASP.NET MVC前臺動態(tài)添加文本框并在后臺使用FormCollection接收值
