java開發中,經常使用到
HashMap
。優雅的程序員安裝了阿里巴巴編碼規範插件的話,使用HashMap
會提示
爲什麼要設定初始值大小呢?
如果沒設置初始值的話,還是會默認給你設定一個初始值的。不過初始值爲
16
。如果實際使用長度大大超過初始值的話,容器的容量會一次次被迫擴大,擴大時會重建hash
表,嚴重影響性能。
初始值設置多大合適呢
比如我們想放置
8
個元素,設置Map<String,Object> map = new HashMap(12);
或者不設也沒有問題的,因爲默認是16
呀。
但是如果超過12
的話怎麼設置呢
查看源碼會發現
意思是默認值16
,觸發擴容時16*0.75=12
。超過12
個元素時就會觸發自動擴容,自動擴容是非常消耗性能的。
阿里提出的建議是initialCapacity = (int) ((float) expectedSize / 0.75F + 1.0F)
即你要放10
個元素,10/0.75+1=14
。
今天的分享就到這啦,關於初始化HashMap的默認值
你學會了嗎?