size:ArrayList的长度数组
构造函数以下:
利用该参数初始化该数组。
将数组的大小设置为10,为该数组分配内存空间。
根据Collection c初始化该ArrayList,底层使用的是System.arrayCopy方法 安全
向该List的尾部添加元素:
首先会调用ensureCapacity(size + 1)方法,检查该List持有的数组是否已到达峰值,若是到了则扩充此数组
由代码可知,每次扩充为原来的一点五倍,可知该操做当容量变大的时候会严重形成内存空间的浪费。函数
addAll(int index, Collection<? extends E> c):
在index位置处依次添加c中的元素,同时将该index处的元素依次右移。spa
addAll(Collection<? extends E> c):
从该List的尾部依次添加c中含有的元素线程
clear():
清空该List,内部持有的数组的长度并不发生变化。设计
indexOf(Object o):
返回某元素在该List中的索引。索引
indexOf(Object o):
从该List尾部查找第一次出现该o时的索引。内存
contains(Object o):
查找该List是否包含oci
fastRemove(int index):
删除该索引处的元素,而且使该索引后面的元素依次左移。element
get(int index):
获取索引index处的元素。
isEmpty():
判断该List是否为空
remove(int index):
删除index处的元素,同时右边的元素左移。
remove(Object o):
先查找,再删除。设计到数组元素的左移。
set(int index, E element):
于位置index处设置为element
size():
返回该集合的长度
toArray():
将该集合转化为Object数组。
toArray(T[] a):
将该集合转化为特定的数组。
trimToSize():
将该数组中空的占位符剔除,以便GC回收。
总结:
该类和Vector的机构几乎彻底相同,该集合非线程安全。