HashMap 学习

部分源码解析

变量和常量

构造方法

(1). 前三个构造方法,无非就是设置一下初始化容量和负载因子,不多说。

(2). 而第四个构造方法:

  • 设置初始化容量和负载因子;
  • inflateTable(...) 初始化数组并扩充容量;
  • 将 map 对象塞进空的 HashMap 中。

inflateTable(...) 

(1). 一直往前推,很容易得知传进来的 toSize 参数就是初始化容量;

(2). roundUpToPowerOf2(toSize) 方法得到返回值是一个比 toSize 大的最小的 2 的 n 次方数 capacity,capacity 就是实际容量;

  • 若 toSize 为 15,则 capacity 为 16;若 toSize 为 17,则 capacity 为 32。因此可以看出:

参与评论