HashMap里hash方法解读

来源:互联网 发布:深入理解php原理 编辑:程序博客网 时间:2024/05/22 05:58

二次hash方法
static final int hash(Object key) {    int h;    return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}
寻找桶的方法

int indexFor(int hash){(n - 1) & hash}

我们知道HashMap中桶的个数是2的i次方,这样key.hasCode()求出的hash值通过indexFor求出来的值只要hash的低i位相同,最终的桶的位置都会一样,从而产生冲突。

有了二次hash方法就把hash值的高位分散到地位,从而减少冲突