Java中HashMap的初始容量設(shè)置方式
根據(jù)阿里巴巴Java開(kāi)發(fā)手冊(cè)上建議HashMap初始化時(shí)設(shè)置已知的大小,如果不超過(guò)16個(gè),那么設(shè)置成默認(rèn)大小16:
集合初始化時(shí), 指定集合初始值大小。
說(shuō)明:
HashMap使用HashMap(int initialCapacity)初始化
正例:
initialCapacity = (需要存儲(chǔ)的元素個(gè)數(shù) / 負(fù)載因子) + 1。注意負(fù)載因子(即loader factor)默認(rèn)為0.75, 如果暫時(shí)無(wú)法確定初始值大小,請(qǐng)?jiān)O(shè)置為16(即默認(rèn)值)。
反例:
HashMap需要放置1024個(gè)元素,由于沒(méi)有設(shè)置容量初始大小,隨著元素不斷增加,容量7次被迫擴(kuò)大,resize需要重建hash表,嚴(yán)重影響性能。
而對(duì)于為什么負(fù)載因子是0.75,答案可以在《數(shù)據(jù)結(jié)構(gòu)與算法分析 Java語(yǔ)言描述》的散列章節(jié)中找到
Java HashMap的指定初始值大小和自動(dòng)擴(kuò)容HashMap指定初始值大小指定初始值大小應(yīng)為2的冪。
如果指定的初始值不是2的冪,則HashMap的容量為大于指定初始值的2的冪;如果不指定,容量默認(rèn)為16。
HashMap自動(dòng)擴(kuò)容當(dāng)HashMap的鍵值對(duì)個(gè)數(shù)大于容量的75%時(shí),HashMap的容量擴(kuò)大一倍。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP常用日期格式化函數(shù) FormatDate()2. xpath簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理3. 解析原生JS getComputedStyle4. 輕松學(xué)習(xí)XML教程5. jsp EL表達(dá)式詳解6. 阿里前端開(kāi)發(fā)中的規(guī)范要求7. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))8. css代碼優(yōu)化的12個(gè)技巧9. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法10. jsp實(shí)現(xiàn)登錄驗(yàn)證的過(guò)濾器
