最近看了一下ConcurrentHashMap 的源码,在put方法的代码中,有这样一句判断 if (fh >= 0) 说明他是链表,为什么hash值大于等于0就是链表了,小于0就是红黑树了?哪位兄弟可以解释一下,谢了
因为TreeBin的构造方法中super(TREEBIN, null, null, null);
static final int TREEBIN = -2;
TreeBin的父类是Node,Node的构造方法第一个参数是hash,这里hash给的是-2
Node(int hash, K key, V val, Node<K,V> next) {
this.hash = hash;
this.key = key;
this.val = val;
this.next = next;
}