1. 程式人生 > >java中HashMap滿了會怎樣

java中HashMap滿了會怎樣

    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);//在指定的下標新增元素
    }
threshold是閾值的意思,這個值有兩個引數決定:capacity(容量,預設16,以後所有的取值都是2的n次方), loadFactor(負載係數,預設0.75,簡單來數就是空間利用率),threshold=capacity*loadFactor,例如預設情況下capacity=16,loadFactor=0.75,所以threshold=12,當HashMap中的元素個數大於等於12時,就有可能擴容,變為原來容量的兩倍,用resize方法調整。