hashmap 中的初始容量和加载因子之间的联系

时间:2021-07-02 19:15:29
  1. /*
  2. 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子 
  3.         */  
  4.         public HashSet(int initialCapacity, float loadFactor) {  
  5.             map = new HashMap<>(initialCapacity, loadFactor);  
  6.         } 

初始容量 是哈希表在创建时的容量。 加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。
当哈希表中的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。
比如说向水桶中装水,此时HashMap就是一个桶, 这个桶的容量就是加载容量,而加载因子就是你要控制向这个桶中倒的水不超过水桶容量的比例,比如加载因子是0.75 ,那么在装水的时候这个桶最多能装到3/4 处,超过这个比例时,桶会
自动扩容。因此,这个桶最多能装水 = 桶的容量 * 加载因子。

如果桶的容量是40,加载因子是0.75 那么你的桶最多能装40*0.75 = 30的水,如果你装了30的水还想继续装水,那么就该用大一点的桶,调用rehash就是负责增加桶的容量的方法。