数据结构与算法 : Java-HashMap相关
从HashMap的实现来看,我们总结拉链发的实现步骤如下:
1. 计算 key 的 hashValue
2. 根据 hashValue 值定位到 table[hashIndex] 。( table[hashIndex] 是一条链表Node)
3. 若 table[hashValue] 为空则直接插入,不然则添加到链表末尾
————————————————
原文链接:https://blog.csdn.net/abm1993/article/details/80886058
-
考虑特殊情况如果两个键的hashcode相同,你如何获取值对象?
-
当我们调用get()方法,
-
HashMap会使用键对象的hashcode找到bucket位置,
-
找到bucket位置之后,
-
会调用keys.equals()方法去找到链表中正确的节点,
-
最终找到要找的值对象。
PS:
负载因子表示一个散列表的空间的使用程度,有这样一个公式:initiallCapacity*loadFactor=HashMap的容量。所以负载因子越大则散列表的装填程度越高,也就是能容纳更多的元素(但是更容易产生hash冲突)。反之,负载因子越小则链表中的数据量就越稀疏,此时会对空间造成浪费(容纳元素少会导致频繁扩容)。https://www.cnblogs.com/baolingye/p/11667717.html (HashMap详解以及负载因子为啥为0.75泊松分布)