HashMap的初始长度为16,其次在自动扩展或手动初始化时,长度必须是2的幂。
初始值选择16是为了服务从key映射到index的哈希值。
上篇文章提到过《初识HashMap(一)》,从Key映射到HashMap数组的对应位置,会用到一个Hash函数:
index = Hash("id")
如何实现一个尽量均匀分布的Hash函数呢?我们通过Key的HashCode值来做运算。
有人可能想到用取模的方式实现index = HashCode(Key) % Length ,原理是一样的,不过取模的执行效率太低,采用位运算。
</