1、首先判断这个集合是否为无参构造出来的,如果是的话和传进的size+1比较取最大值【得到所需容器大小】进入下一步操作。
2、ensureExplicitCapacity中首先增加了修改记录modCount+1
https://blog.csdn.net/qq_24235325/article/details/52450331
modCount主要是为了在迭代器当中有个next方法如果越界的话会判断modCount和expectedModCount值的相等性,抛出同步修改异常。在对一个集合对象进行迭代操作的同时,并不限制对集合对象的元素进行操 作,这些操作包括一些可能引起迭代错误的add()或remove()等危险操作。在AbstractList中,使用了一个简单的机制来规避这些风险。 这就是modCount和expectedModCount的作用所在
然后判断所需的容器大小和所需最小容器大小比较,如果不够的话进行扩容
3、默认是原有容器的1.5倍大小,不够的话用所需最小的值。如果过大的话先判断是否小于0【栈溢出】抛异常,或者按照Integer.MAX_VALUE - 8进行扩容。