HashMap存储桶中的IdentityHashCode

HashMap存储桶中的IdentityHashCode,第1张

HashMap存储桶中的IdentityHashCode

存储桶将

identityHashCode
在插入期间使用,但查找仅使用哈希码和
compare()
调用(如果可用)。这意味着有时需要扫描节点的两个子树

查找逻辑看起来像这样

do {  if (... keys are equal or can be compared ...) {    // Go left, right or return the current node    ...  } else if ((q = pr.find(h, k, kc)) != null)    // Search the right subtree recursively    return q;  else   // Go to the left subtree   p = pl;} while (p != null);

请参阅http://hg.openjdk.java.net/jdk10/jdk10/jdk/file/ffa11326afd5/src/java.base/share/classes/java/util/HashMap.java#l1901并注意

tieBreakOrder()
(该方法负责比较
identityHashCode
s不会在中的任何地方调用
find()



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5134224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存