java中HashMap滿了會怎樣
阿新 • • 發佈:2019-01-23
threshold是閾值的意思,這個值有兩個引數決定:capacity(容量,預設16,以後所有的取值都是2的n次方), loadFactor(負載係數,預設0.75,簡單來數就是空間利用率),threshold=capacity*loadFactor,例如預設情況下capacity=16,loadFactor=0.75,所以threshold=12,當HashMap中的元素個數大於等於12時,就有可能擴容,變為原來容量的兩倍,用resize方法調整。void addEntry(int hash, K key, V value, int bucketIndex) { if ((size >= threshold) && (null != table[bucketIndex])) { resize(2 * table.length); hash = (null != key) ? hash(key) : 0; bucketIndex = indexFor(hash, table.length); } createEntry(hash, key, value, bucketIndex);//在指定的下標新增元素 }