这篇文章介绍了 HashMap 类常用的常量和方法,为了后面更好的学习 HashMap 先入个门。
概念
- size:记录了Map中KV对的数量
- loadFactor:装载因子,用来衡量HashMap满的程度。loadFactor的默认值是0.75f。
- threshold:临界值,当KV对的数量超过临时值的时候,HashMap会扩容。threshold = 容量 * 装载因子
- capacity:如果容量不指定大小,默认是16(DEFAULT_INITIAL_CAPACITY = 1 «4 )
size和capacity
- HashMap就像是一个桶。capacity代表当前这个桶最多可以装多少元素。size代表当前这个桶已经装了多少元素。
- 在初始化HashMap的时候,应该尽量指定其大小。尤其是当你已知map中存放的元素个数时。
loadFactor和threshold
HashMap有扩容机制,当达到条件时会自动扩容,从16扩到32,64,128…
什么时候会发生扩容呢?
当Map中的元素个数 size 超过临界值 threshold 的时候,就会发生扩容。threshold = 容量 * 装载因子。
loadFactor是装载因子,表示 HashMap 满的程度,默认值为0.75f,设置成0.75有一个好处,那就是0.75正好是3/4,而capacity又是2的幂。所以,两个数的乘积都是整数。
HashMap默认的capacity值是16,也就是说,当size>12时,就会发生扩容超过。
HashMap 会在每次put()操作之后,判断是否需要扩容。