HashMap的基础概念

2019/08/06 Java 集合

这篇文章介绍了 HashMap 类常用的常量和方法,为了后面更好的学习 HashMap 先入个门。


概念

  • size:记录了Map中KV对的数量
  • loadFactor:装载因子,用来衡量HashMap满的程度。loadFactor的默认值是0.75f。
  • threshold:临界值,当KV对的数量超过临时值的时候,HashMap会扩容。threshold = 容量 * 装载因子
  • capacity:如果容量不指定大小,默认是16(DEFAULT_INITIAL_CAPACITY = 1 «4 ) HashMap常量

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()操作之后,判断是否需要扩容。

Search

    Table of Contents