ArrayList原理源码分析

ArrayList是我们常用的集合

这里不在一一罗列源码内容,只截取重点代码加以分析

ArrayList原理源码分析

elementData既为ArrayList存储对像的空间,由此我们可以看到ArrayList底层的数据结构是一个Object[]数组。

ArrayList原理源码分析

DEFAULT_CAPACITY定义了数组的默认初始化长度为10,当然也可以自定义数组初始化长度。

ArrayList原理源码分析

它的add(E e)既先对数组+1,然后吧对象放在数组的最后一个;

add(int index, E element),先对数组+1,再数组(elementData)的数据从index向后移动一个位置,最后把对象存进数组的index位置

ArrayList原理源码分析

get()方法就是从数组中取值,不多说

重点了解一下数组扩容

ArrayList原理源码分析

把源数组长度加上其右移一位后的值,既为新数组的长度;大概是原数组长度的1.5倍。

ArrayList的操作既对数组的操作。

( 参考JDK1.7,ArrayList)