数据结构与算法 : Java-HashMap相关

从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.  
    最终找到要找的值对象。

     

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

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

posted @ 2020-01-16 16:42  cccy0  阅读(157)  评论(0编辑  收藏  举报