底层结构:可变数组
源码分析:
jdk8
1.当创建ArrayList对象时,初始化了Object类型的数组elementData的容量为0
2.当第一次添加元素时,初始化elementData的容量为10
3.当每次添加时,都需要先判断容量是否足够,如果足够则直接添加新元素到对应的空位上;
如果不够,则需要扩容1.5倍(oldCapacity+oldCapacity>>1)
jdk7
1.当创建ArrayList对象时,初始化了Object类型的数组elementData的容量为10
2.当每次添加时,都需要先判断容量是否足够,如果足够则直接添加新元素到对应的空位上;如果不够,
则需要扩容1.5倍(oldCapacity+oldCapacity>>1)
jdk7:饿汉式,创建对象时,则初始数组容量为10
jdk8:懒汉式,创建对象时,并没有初始数组容量为10,而是在添加元素时,才初始为10