1.ArrayList的继承关系如图所示:
2.宏观上说,ArrayList是基于动态数组实现的,数组具有按索引查找的特性,所以访问很快,适合经常查询的数据。
3.具体源码解析。
为什么说ArrayList是动态数组,这个可以看它的构造函数。如下图所示,有两个构造方法,存放元素的elementData是一个数组,同时被初始化。ArrayList的放的元素就是放 在这个数组里。
ArrayLIst的默认初始化容量是10,这个是容量,并不是ArrayList的初始化大小,更不能等同于size,而是elementData[]这个数组的大小,而size指的是数组里面存放有数据的 数量,也就是list的大小。直接new ArrayList,,然后调用相应的size()方法,肯定返回的是0、
当容量不够时候(ensureCapacityInternal(size + 1)),会调用相应的扩容的方法(private void grow(int minCapacity))。下面再讲add方法时候,会详细讲解。
3.1 往链表增加元素:add方法。
ArrayList提供了两种add方法,