Hash算法

取余:X % a == X & (a – 1)
注意点:

The default initial capacity - MUST be a power of two.

Why:为了保证得到的数组下标完全取决于 hash 值,与数组长度无关

1
2
3
16 -> 10000    15 -> 01111
32 -> 100000 31 -> 011111
64 -> 1000000 63 -> 0111111

为什么在定义HashMap的时候要尽量指定大小

  • 扩容的时候回重新分配值,占用性能
  • 尽量让hashMap 不要转红黑树,因为转红黑树非常占用性能

hash 高低位

为了保证尽量低位的值是不一样的