HashMap为什么是二倍扩容? 元素定位位置的代码: 核心:(n-1)& hash 如果桶大小为2的n次幂,如16 则n-1后的(15)二进制数为:0 1 1 1 1 可以确保每个桶的位置都可以有值 如果桶大小为15 则n-1后的(14)二进制数为:0 1 1 1 0 因为任意数(hash) & 0 1 1 1 0 之后,都不会得到 1、3、7、14,因为0 1 1 1 0 的 末尾是0,任何数&0都得0, 因此,这几个桶位置将永远是空的,会导致冲突加剧,查询性能降低