ArrayList是实现了List集合的动态数组,其大小可以改变;
声明方式:
ArrayList<> list=new ArrayList<>();
扩容机制
当调用无参构造函数时,集合初始长度为0;
当调用带参构造函数时,集合初始长度为指定长度
1、调用add()方法
第一次扩容长度为10 (0-9)
后续扩容为长度为前一次长度的1.5倍(扩容为创建一个新的数组,然后把旧数组的值拷贝到新数组中来代替旧数组,旧数组被回收)
2、调用addAll()方法
如果添加集合的数量长度小于10,则直接扩容为10;
如过添加集合的数量长度大于10,则扩容为添加集合的长度;
如果原本容量已满,则选择下次扩容的容量与想添加的数组间的较大值,进行扩容。
例如:此时数组长度为10(满了),然后又要添加8个元素,这是扩容就应该是18,而不是15。