首先你要知道key在数组中的位置是根据(数组长度 - 1) & spread(key.hashCode()))得到的
,数组长度我记得默认是16,16-1变成二进制就是0000 1111,扩容都是扩容两倍,也就是32,那么32-1就是 0001 1111,和16-1一比是不是就是在第五位上多了个1呢,然后在看下图的我标志的if方法,这里的n是扩容前的数组长度也就是16,16是0001 0000,然后这个if是 & 哦,也就是说如果key的hash值的第五位有1就为1,否则就为0
因为数组是连续的,所以说当数组变大的时候,可以有部分数据不进行迁移,而是第五位有值的进行迁移。
并不是你说的只分成两份