關於初始化HashMap的默認值

java開發中,經常使用到HashMap。優雅的程序員安裝了阿里巴巴編碼規範插件的話,使用HashMap會提示【HashMap】初始化時,儘量指定初始值大小

爲什麼要設定初始值大小呢?

如果沒設置初始值的話,還是會默認給你設定一個初始值的。不過初始值爲16。如果實際使用長度大大超過初始值的話,容器的容量會一次次被迫擴大,擴大時會重建hash表,嚴重影響性能。

初始值設置多大合適呢

比如我們想放置8個元素,設置Map<String,Object> map = new HashMap(12);或者不設也沒有問題的,因爲默認是16呀。
但是如果超過12的話怎麼設置呢
查看源碼會發現hashmap默認值
在這裏插入圖片描述
意思是默認值16,觸發擴容時16*0.75=12。超過12個元素時就會觸發自動擴容,自動擴容是非常消耗性能的。
阿里提出的建議是initialCapacity = (int) ((float) expectedSize / 0.75F + 1.0F)
即你要放10個元素,10/0.75+1=14

今天的分享就到這啦,關於初始化HashMap的默認值你學會了嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章