ArrayList扩容规则
无参构造初始化的时候,长度为0
在add方法第一次添加元素,扩容为10
以后每次扩容成之前的1.5倍,然后把旧数组拷贝到新数据,再把新数据放到新数组。旧数组被回收
扩容计算方式,比如之前是15
15 >> 1
=7
7+15=22为新数组长度
如果为addAll方法,且数组中没有元素,直接添加集合,会将数组扩容为 原始长度 和 集合长度 的较大值
如果为addAll方法,且数组中有元素,直接添加集合,会将数组扩容为 应该扩容的长度 和 添加元素之后的扩容长度 的较大值
如 长度为10 的数组 添加一个长度为6的集合
下次应该扩容为15,但是需要添加6个元素,所以15就装不下了,需要扩容到22