HashMap的数据结构

loadFactor是装载因子,表示HashMap满程度,默认值为0.75f,0.75正好是3/4,而capacity又是2的幂。所以,两个数的乘积都是整数。代表HashMap对数组容量的使用率为75%,超过该使用率,则数组需要进行扩容。

加载因子:存储数据的个数与最大存储量的比值,表示元素填满的程度,元素个数达到容量长度(加载因子=1),进行扩容。

扩展知识点:三目运算符

a  a?b:c if(a) c;else if(b) c;

  首先比较a和b的大小,当ab为1的时候那么会执行表达式c

static final int tableSizeFor(int cap) {
        int n = -1 >>> Integer.numberOfLeadingZeros(cap - 1);
        return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }

HashMap的数据结构_第1张图片

threshole极限值

 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

数组默认容量:16

   static final float DEFAULT_LOAD_FACTOR = 0.75f;

默认加载因子:0.75

   public V put(K key, V value) {
        return putVal(hash(key), key, value, false, true);
    }

HashMap的数据结构_第2张图片

table 返回一个Node []的数组

static final int MAXIMUM_CAPACITY = 1 << 30;

1<<4=16,即数字变大,而且2^4

1<<30=2^30次方

HashMap的数据结构_第3张图片

你可能感兴趣的:(数据结构)