以add()触发的扩容为例:
minCapacity为size+1
1.如果minCapacity>数组长度elementData.length,进行grow()扩容
扩容后数组长度:newCapacity = elementData.length*1.5
数组最大长度:MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8
2.如果newCapacity>minCapacity,说明扩容后的长度大于所需要的长度
并且newCapacity>MAX_ARRAY_SIZE
如果minCapacity<MAX_ARRAY_SIZE
则newCapacity取MAX_ARRAY_SIZE
否则取Integer.MAX_VALUE
这里的大概意思就是,如果你扩容后的长度大于所需的长度并且所需的长度小于MAX_ARRAY_SIZE,那么扩容后的长度取MAX_ARRAY_SIZE,否则取Integer.MAX_VALUE
3.如果newCapacity<minCapacity,说明扩容后的长度小于所需要的长度
那么令newCapacity = minCapacity,也就是令扩容长度为所需长度
如果newCapacity >MAX_ARRAY_SIZE,也就是说扩容长度大于MAX_ARRAY_SIZE
令newCapacity = Integer.MAX_VALUE
这里的大概意思就是,如果所需长度大于扩容长度,那么令扩容长度等于所需长度,如果所需长度大于MAX_ARRAY_SIZE,那么令扩容长度等于 Integer.MAX_VALUE