jdk8之后HashMap内部源码保证扩容为2的次方值

看返回值的判断是有可能容量为1的

return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;

所以问题来了,构造是能传入初始数组长度的,那么初始传入的initialCapacity是多少的时候n才会小于0?很迷惑这个东西

我觉得应该是做了一层保护,要是别人传个-1之类的,那不是乱了么??这也是基本的设计思想嘛。