从HashMap的实现来看,我们总结拉链发的实现步骤如下:
1. 计算 key 的 hashValue
2. 根据 hashValue 值定位到 table[hashIndex] 。( table[hashIndex] 是一条链表Node)
3. 若 table[hashValue] 为空则直接插入,不然则添加到链表末尾
————————————————
原文链接:https://blog.csdn.net/abm1993/article/details/80886058

 

  1. 考虑特殊情况如果两个键的hashcode相同,你如何获取值对象?
  2.  
    当我们调用get()方法,
  3.  
    HashMap会使用键对象的hashcode找到bucket位置,
  4.  
    找到bucket位置之后,
  5.  
    会调用keys.equals()方法去找到链表中正确的节点,
  6.  
    最终找到要找的值对象。
    数据结构与算法 : Java-HashMap相关

     

    PS:
    负载因子表示一个散列表的空间的使用程度,有这样一个公式:initiallCapacity*loadFactor=HashMap的容量。所以负载因子越大则散列表的装填程度越高,也就是能容纳更多的元素(但是更容易产生hash冲突)。反之,负载因子越小则链表中的数据量就越稀疏,此时会对空间造成浪费(容纳元素少会导致频繁扩容)。

    https://www.cnblogs.com/baolingye/p/11667717.html (HashMap详解以及负载因子为啥为0.75泊松分布)

相关文章:

  • 2021-08-09
  • 2021-12-15
  • 2022-02-07
  • 2021-11-23
  • 2021-11-06
  • 2021-08-04
  • 2021-04-25
  • 2021-05-14
猜你喜欢
  • 2021-07-06
  • 2021-12-23
  • 2021-07-17
  • 2021-04-12
  • 2022-12-23
  • 2021-06-08
  • 2021-10-27
相关资源
相似解决方案