Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

为什么HashMap要求容量必须是2的幂?

🎯 当mask(length-1)的所有低位都是1时,hash值的每一位都能影响最终的索引计算

🎯 如果mask某位是0,那么hash值对应位的信息就丢失了,导致分布不均匀

length = 16 = 10000 (二进制)
length-1 = 15 = 01111 (二进制) ← 低4位全为1!

length = 15 = 01111 (二进制)
length-1 = 14 = 01110 (二进制) ← 最后一位是0!

实验证明:

image-20250605234757522

image-20250605234746574

评论