向HashMap中添加1000個元素,設置new HashMap()值為多少合適?


在已知元素容量的情況下,為了盡量減少碰撞增加查詢效率,應該盡量選擇較大數的同時避免資源浪費。

HashMap底層通過hash值來計算索引位置的源碼:

1.重新計算hash值

 static final int hash(Object key) {
        int h;
        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
    }

2.計算索引

 if ((p = tab[i = (n - 1) & hash]) == null)
            tab[i] = newNode(hash, key, value, null);

由此可見索引位置是新的hash值與運算數組長度減一,而為了盡量使索引值盡量均勻,應當使數組長度為2的倍數,確保與運算的一方都為1。

因此這里可以選擇1024或2048為初始長度。負載因子的值可以選擇0.7~0.8。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM