Java中HashMap的初始容量設置方式
Java中HashMap的初始容量設置
根據阿裡巴巴Java開發手冊上建議HashMap初始化時設置已知的大小,如果不超過16個,那麼設置成默認大小16:
集合初始化時, 指定集合初始值大小。
說明:
HashMap使用HashMap(int initialCapacity)初始化
正例:
initialCapacity = (需要存儲的元素個數 / 負載因子) + 1。註意負載因子(即loader factor)默認為0.75, 如果暫時無法確定初始值大小,請設置為16(即默認值)。
反例:
HashMap需要放置1024個元素,由於沒有設置容量初始大小,隨著元素不斷增加,容量7次被迫擴大,resize需要重建hash表,嚴重影響性能。
而對於為什麼負載因子是0.75,答案可以在《數據結構與算法分析 Java語言描述》的散列章節中找到
Java HashMap的指定初始值大小和自動擴容
HashMap指定初始值大小
指定初始值大小應為2的冪。
如果指定的初始值不是2的冪,則HashMap的容量為大於指定初始值的2的冪;如果不指定,容量默認為16。
HashMap自動擴容
當HashMap的鍵值對個數大於容量的75%時,HashMap的容量擴大一倍。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java集合-HashMap
- Java數據結構之HashMap和HashSet
- 基於hashmap 的擴容和樹形化全面分析
- 深入理解Java中的HashMap
- JDK8中的HashMap初始化和擴容機制詳解