如果两个元素不相同,但是hash函数的值相同,这两个元素就是一个碰撞。为了减少hash值的碰撞,需要实现一个尽量均匀分布的hash函数,在HashMap中通过利用key的hashcode值,来进行位运算。例子
公式:index = e.hash & (length - 1)
长度16或者其他2的幂,,length - 1的值是所有二进制位全为1,这种情况下,index的结果等同于hashcode后几位的值
只要输入的hashcode本身分布均匀,hash算法的结果就是均匀的,所以,HashMap的默认长度为16,是为了降低hash碰撞的几率,使元素在哈希表中均匀散列。
HashMap的默认长度为什么是16?
最新推荐文章于 2023-09-17 17:02:06 发布