HashMap源码:哈希冲突与链表处理机制详解.pdfVIP

  • 2
  • 0
  • 约1.8千字
  • 约 2页
  • 2026-06-12 发布于北京
  • 举报

HashMap源码:哈希冲突与链表处理机制详解.pdf

就是说,假设某两个key的hash值一样的,两个key不同,hash值一样,这个概率其实很

低很低,除非呢?就是说你自己乱写了hashCode()方法,你自己人为的制造了两个不

同的key,但是hash只一样

两个key的hash值不一样,但是通过寻址算法,定位到了数组的同一个key上去,此时就

会出现典型的hash,默认情况下,会用单向链表来处理

if((p=tab[i=(n-1)hash])==null)

这个分支,他的意思是说tab[i],i就是hash定位到的数组index,tab[i]如果为空,也就是

hash定位到的这个位置是空的,之前没有任何人在这里,此时直接是放一个Node在数组的

这个位置即可

else

如果进入else,就说明通过hash定位到的数组位置,是已经有了Node了

if(p.hash==hash

((k=p.key)==key||(key!=nullkey.equals(k))))

e=p;

//如果满足上述条件,说明是相同的key,覆盖旧的v

文档评论(0)

1亿VIP精品文档

相关文档