Java面经——HashMap
HashMap详解
一 映射
1. hash
在取模运算之前,先将hashcode进行一次hash。该函数的作用是通过异或将hashcode的高位和低位混合,使得低位的随机性增大,让数据元素更加均衡的分布,减少碰撞。
1 | static final int hash(Object key) { |
2. 取模
然后进行取模:hash & (length - 1)
为什么是 &
?: 当length是2的n次方时,hash % length 等于 hash & (length - 1)。