【Java集合】之ArrayList
ArrayList
一、概述
默认初始化容量 10
最大容量2147483647-8=2147483639
扩容1.5倍
测试
public class TestArrayList { public static void main(String[] args) { List list = new ArrayList(); A a = new A(); list.add(new A()); list.add(new B()); list.add(new C()); list.add(a); list.add(a); list.add(a); list.add(a); list.add(a); list.add(a); list.add(a); //第10个 list.add(a); //第11个元素 System.out.println(list); } }
二、初始化
使用IDEA调试
List list = new ArrayList(); 初始化this.elementData={}
elementData声明的注释:elementData是用于存放ArrayList元素的,ArrayList的容量就是这个数组的长度,如何空的而且elementData=DEFAULTCAPACITY_EMPTY_ELEMENTDATA的ArrayList,在添加第一个元素时会扩展大小到默认容量(10)
三、Add
list.add(new A()); 添加第一条
进入ensureCapacityInternal(size+1)方法看看
接着到grow()方法
运行之后
elementData由空变成了长度为10的数组
当添加第11个元素时,size=10,所需存储的最小容量minCapacity=11,需要扩容
扩容成10+10/2=15
add总结
ArrayList初始化为{},空的,当第一次添加元素时,会设置为默认容量(10)
当添加元素个数超出容量大小时,会扩容成原来的1.5倍
四、Remove
-
list.remove(index)
-
list.remove(Object o)
remove总结
1.删除元素需要移动该元素后面的元素
2.remove(Object o)只删除第一个匹配的元素