hashMap源码

static final int hash(Object key) {

int h;

    return (key ==null) ?0 : (h = key.hashCode()) ^ (h >>>16);

}为什么不直接用hashcode?通过亦或操作,让值更加散列

if ((p = tab[i = (n -1) & hash]) ==null)数组下标为什么是(n -1) & hash?

n是数组大小2的n次方,位运算效率更高,同时和hasn%n效果一样


链表长度超过8转成红黑树(jdk1.8),?

节点<6 红黑树转成链表

链表 n 的查找复杂度O(n)

数学原理

你可能感兴趣的:(hashMap源码)