1、创建一个ArrayList对象,并添加一个元素

2、执行构造方法(目前还是一个空数组)

![]()

3、添加元素add(size目前为0)


判断底层数组是否是当时初始化时的数组,如果是(还未扩容),返回(当前元素数量,默认初始化数量(10))之中的最大值,如果不是(已经扩过容),返回当前元素的数量。

判断当前元素个数的数量,是否大于初始化时设定的容量,如果大于,则扩容,不大于则返回add方法,添加元素,结束add方法
ps:ArrayList 创建底层数组,是在第一次添加时,new 的时候一个空的数组,既elementDate.length=0

ArrayList扩容,默认扩容到当前数量的1.5倍。


判断当前数组是否是当时初始化的数组,如果是(第一次扩容,第一次增加数据),根据扩容数量创建一个新的数组,如果不是则根据扩容数量和数据的类型,通过反射创建一个新的数组,最后将原来数组的数据,复制到新创建的数组中,返回给elementData。

最后回到add方法,添加的一个元素。

个人学习记录,如果错误,请您指正,万分感谢!
本文详细介绍了ArrayList的工作原理,包括初始化过程、元素添加流程及扩容机制。重点解释了当添加元素时如何判断是否需要扩容,以及扩容的具体实现方式。
544

被折叠的 条评论
为什么被折叠?



