ArrayList
主要属性
构造方法
1.无参构造:直接返回一个{}。
2.参数构造(初始化长度):如果长度大于0直接创建一个对应长度的Object数组,如果长度为0则直接返回{}。
3.参数构造 (传入一个集合): 将集合转为数组类型并判断其长度,如果长度小于0则直接报错,反之,判断集合的类型是否为ArryList类型,如果是则直接赋值,反之,调用Array.copyof方法得到对应的ArrayList进行赋值。
add方法的扩容机制
ensureCapacityInternal方法,确定容量方法。ensureExplicitCapacity方法就是判断是否需要扩容。
如果当前是第一次创建则直接将新的容量设置为10。
如果新的容量大于当前的容量就进行扩容,反之则不扩容。
grow方法完成扩容。
因为使用>>1也就是就容量的一半,扩容到原来的1.5倍m=,通过Array.copyOf完成扩容。
当第一次添加数据的时候,此时ArrayList中的值为为{},扩容的长度就是10。
当第2~10次添加的时候,是不需要扩容的。
当第11次以上的时候,扩容的大小就是用来的1.5倍(就比如:15)。