一、自动增加大小
1. 检查容量
2. 如果不够,新建一个更长的数组
3. 把老的数据,使用Arrays.copyOf方法,拷贝到新的数组
4. 引用指向新的数组
二、ArrayList使用场景
1. ArrayList的插入和删除操作,会调用System.arrayCopy()方法,拷贝数组效率低
2. 适合读数据比较多,不会频繁插入和删除的场景
3. 插入和删除操作比较频繁的情况下,使用LinkedList,因为链表不适合访问,而适合插入和删除
三、安全
1. 当做参数时,需要考虑原始的arrayList会不会改变
2. 需要把参数做一个拷贝,方法里使用这个拷贝
四、复制
1. clone()方法
2. 构造方法,把另一个ArrayList当做参数传入
3. Collection的copy方法
原文:https://www.cnblogs.com/june0816/p/6575232.html