1.ArrayList
无参构造器使用ArrayList源码
1.首先创建了一个空的elementData数组
2.add()方法添加第一个元素,如果是值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱 的操作
(1)调用ensureCapacityInternal(size+1)方法,确认你这个容器是否能往里加入一个元素(即确定是否扩容)
调用后首先判断你这个数组是否是个空数组,如果是,【就给mincapacity赋值1然后和10比较,取最大值赋给mincapacity;】
然后调用ensureCapacity()方法:现用modCount++;记录集合修改次数,防止多线程操作出现异常;然后进行mincapacity和原数组长度进行比较,
如果mincapacity大就说明我实际需要的最小容量为mincapacity而你不够了,然后调用grop()方法去真扩容。把原数组的容量扩大1.5倍赋值给一个变量
【(由于此时为第一次原数组length为0,扩容1.5仍然为0,扩容后依旧比需求小,就直接把所需容量mincapacity赋值给这个变量,
【相当于第一次默认扩容为10】,ps:扩容后就可以把元素通过索引加进去了)】
然后通过Arrays.copyOf对原数组进行扩容并赋值给原数组---//原数组=Arrays.copyOf(原数组,这个变量)//----
第二次扩容就按原数组1.5倍扩容。
(2)执行赋值操作
把元素放入集合里面
标签:扩容,JAVA,mincapacity,ArrayList,源码,数组,赋值 From: https://www.cnblogs.com/wang1999an/p/16816943.html