红黑树是一个自平衡的二叉搜索树。
转换红黑树那一段,是尝试转换红黑树,方法中会判断当前hashmap的值是否大于64,大于的话再转换红黑树。
这里的e.next==null的情况也需要拆分到新数组中-> newTab[e.hash & (newCap - 1)] = e;
而且红黑树也要遍历拆分到新数组中。
👆如果是红黑树的话,需要的处理逻辑要再多一点
上面第二段的代码表示的意思是, h先赋值了key.hashCode() 然后 h 右移16位,然后与key.hashCode 异或。
第三段是用-1后按位与预算代替了取模运算(数组长度必须是2的n次幂)。
其中ConcurrentHashMap可以参考
Javaguide