- hash%length = hash&(length - 1)的前提是length为2的n次方;
- length为2的n次方,可以减少hash碰撞,因为length-1的二进制表示全为1,每一位都能&1,不同位置上不产生hash碰撞;
- 模运算之前,需先将key生成的hashCode进行 高16位异或运算 或 低16位无符号右移,目的在于减少hash碰撞(hashCode的后n位为0,hash&(length - 1)的结果都为0)。
- 如何设计可作为hashMap Key的类?equals相等,hashcode一定相等;hashcode相等,equals不一定相等;hashcode不相等,equals一定不相等;equals不相等,hashcode不一定不相等。
HashMap总结
最新推荐文章于 2019-11-29 19:12:56 发布