JavaGuide icon indicating copy to clipboard operation
JavaGuide copied to clipboard

Map源码解析当中put方法源码解析注释有错误

Open kim709394 opened this issue 2 years ago • 0 comments

  // 桶中已经存在元素
    else {
        Node<K,V> e; K k;
        // 比较桶中第一个元素(数组中的结点)的hash值相等,key相等
        if (p.hash == hash &&
            ((k = p.key) == key || (key != null && key.equals(k))))
                // 将第一个元素赋值给e,用e来记录
                e = p;
        // hash值不相等,即key不相等;为红黑树结点
        else if (p instanceof TreeNode)
            // 放入树中
            e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);

上面这段代码的“ // hash值不相等,即key不相等;为红黑树结点”这句注释不对,因为put方法走到这个if里面,说明新加入的键值对对象的key的hash值肯定是和数组[i]桶的hash值是相等的,此时已经发生hash碰撞了,只是key.equals(k)不相等。

kim709394 avatar Jun 18 '22 15:06 kim709394