负载因子值的大小,对HashMap有什么影响

解题:

  1. 负载因子的大小决定了HashMap的数据密度。
  2. 负载因子越大密度越大,发生碰撞的几率越高,数组中的链表越容易长,造成查询或插入时的比较次数增多,性能会下降。
  3. 负载因子越小,就越容易触发扩容,数据密度也越小,意味着发生碰撞的几率越小,数组中的链表也就越短,查询和插入时比较的次数也越小,性能会更高。但是会浪费一定的内容空间。而且经常扩容也会影响性能,建议初始化预设大一点的空间。
  4. 按照其他语言的参考及研究经验,会考虑将负载因子设置为0.7~0.75,此时平均检索长度接近于常数。

扩展:
HashMap的put操作的底层实现过程

  1. 调用key所在类的hashCode计算出key的哈希值,然后根据哈希值找到在Node数组中的索引。
    1. 若当前索引位置为空,则直接加入
    2. 否则,则与已经存在的数据key的哈希值比较
      1. 若不同,则直接加入
      2. 否则,继续比较已经存在的key和新put的key的equals值;
        1. 若返回false,则加入
        2. 若返回true,则将新put的值替换原来的值

你可能感兴趣的:(面试题,hashmap)