为了账号安全,请及时绑定邮箱和手机立即绑定

WeakHashMap在哪里把hash冲突的节点链到链表上的?大佬们有什么好的建议?

WeakHashMap在哪里把hash冲突的节点链到链表上的?大佬们有什么好的建议?

Qyouu 2019-07-27 00:41:19
问题:在阅读java8中WeakHashMap源码时,发现一个问题,put操作在发生hash冲突时,只有替换操作,但是没有新增链表节点的操作,链表节点是什么时候链上去的?java8中的put源码如下:publicVput(Kkey,Vvalue){Objectk=maskNull(key);inth=hash(k);Entry[]tab=getTable();inti=indexFor(h,tab.length);//这里只是在链表上找到key存在的节点做替换,但是对于key不存在的情况,//并没有创建新的节点链到原来的链表后面。for(Entrye=tab[i];e!=null;e=e.next){if(h==e.hash&&eq(k,e.get())){VoldValue=e.value;if(value!=oldValue)e.value=value;returnoldValue;}//?????当hash相同但是key不同不是应该创建新节点链到链表上吗?}modCount++;Entrye=tab[i];tab[i]=newEntry(k,value,queue,h,e);if(++size>=threshold)resize(tab.length*2);returnnull;}
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信