首先从两个大方向分析。1. 构造器,2. add()和addAll()方法 。
常用的三个构造器
- 1. 无参构造器。 ArrayList() 这种创建集合,默认集合的大小为0。
- 2.指定数组大小的有参构造器。 ArrayList(int initialCapacity) 这种创建集合,集合长度初始值是指定的长度
- 3.ArrayList(Collection<….> c) 这种有参构造,集合长度初始值会使用结合 c 的大小长度作为初始值
常见的添加方法
1.add(Object o) 方法
- 当无参构造器 构造完集合,第一次调用add() 方法时,会初始化一个长度为10的数组。之后,当数组长度不够时,会把新数组的长度扩容到 旧数组长度的1.5倍,之后每一次都是上一次的1.5(向下取整)倍
- 当指定数组大小的有参构造器,扩容同上
- ArrayList(Collection<….> c) 这种有参构造。扩容机制同上
2.addAll(Collection c)方法
- 当此时该集合 长度为0时, 使用该方法,集合的长度为Math.max(10,c集合的元素个数)。简单就是说,当集合c的长度小于10时,第一次扩容的长度为10,当集合c的长度大于10时,第一次扩容的长度为该集合的长度。
- 当此时该集合 长度不为0时,使用该方法,集合的长度为Math.max(原容量的1.5倍,实际总的集合元素的个数)