ArrayList原理解析

ArrayList介绍

1、ArrayList底层是基于数组来实现的,因此在 get 的时候效率高,而 add 或者 remove 的时候,效率低;

2、调用默认的 ArrayList 无参构造方法的话,数组的初始容量为 10 ;

3、ArrayList 会自动扩容,扩容的时候,会将容量扩至原来的 1.5 倍;

4、ArrayList 不是线程安全的;

源码分析

构造方法

add方法

ensureCapacityInternal方法

grow方法

扩容方法其实就是新创建一个数组,然后将旧数组的元素都复制到新数组里面。

add重载方法 add(int index, E element)

addAll方法

get方法

elementData方法

remove方法

remove 中主要是将之后的元素都向前一位移动,然后将最后一位的值设置为空。最后,返回已经删除的值。

remove重载方法

clear方法

clear 方法无非就是遍历数组,然后把所有的值都置为 null 。

你可能感兴趣的:(ArrayList原理解析)