Java中HashMap的初始容量設(shè)置方式
Java中HashMap的初始容量設(shè)置
根據(jù)阿里巴巴Java開發(fā)手冊上建議HashMap初始化時(shí)設(shè)置已知的大小,如果不超過16個(gè),那么設(shè)置成默認(rèn)大小16:
集合初始化時(shí), 指定集合初始值大小。
說明:
HashMap使用HashMap(int initialCapacity)初始化
正例:
initialCapacity = (需要存儲(chǔ)的元素個(gè)數(shù) / 負(fù)載因子) + 1。注意負(fù)載因子(即loader factor)默認(rèn)為0.75, 如果暫時(shí)無法確定初始值大小,請(qǐng)?jiān)O(shè)置為16(即默認(rèn)值)。
反例:
HashMap需要放置1024個(gè)元素,由于沒有設(shè)置容量初始大小,隨著元素不斷增加,容量7次被迫擴(kuò)大,resize需要重建hash表,嚴(yán)重影響性能。
而對(duì)于為什么負(fù)載因子是0.75,答案可以在《數(shù)據(jù)結(jié)構(gòu)與算法分析 Java語言描述》的散列章節(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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot?整合?Thymeleaf?實(shí)例分享
這篇文章主要分享了Spring?Boot整合Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關(guān)于其更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-05-05
Spring Cloud 動(dòng)態(tài)刷新配置信息教程詳解
這篇文章主要介紹了Spring Cloud 動(dòng)態(tài)刷新配置信息的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
Linux系統(tǒng)Docker拉取JDK21鏡像超細(xì)詳解
這篇文章主要介紹了如何在Linux系統(tǒng)上使用Docker拉取JDK21鏡像,并基于該鏡像搭建開發(fā)和測試環(huán)境,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12
Java面向?qū)ο髮?shí)現(xiàn)汽車租賃系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java面向?qū)ο髮?shí)現(xiàn)汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
spring-security關(guān)于hasRole的坑及解決
這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Java代碼實(shí)現(xiàn)對(duì)properties文件有序的讀寫的示例
本篇文章主要介紹了Java代碼實(shí)現(xiàn)對(duì)properties文件有序的讀寫的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例
這篇文章主要介紹了java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例的相關(guān)資料,這里提供了實(shí)現(xiàn)代碼可以幫助大家理解TCP及文件讀寫的知識(shí),需要的朋友可以參考下2017-07-07

