存储桶将
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()(该方法负责比较
identityHashCodes不会在中的任何地方调用
find()。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)