创意电子

标题: 备战Java口试「JDK集合源码系列」——ArrayList源码解析 [打印本页]

作者: 爱马士团团长    时间: 2021-8-11 16:37
标题: 备战Java口试「JDK集合源码系列」——ArrayList源码解析
因为热爱坚持所以,因为热爱所以热爱。熬过你无戏可演的日子,终于换来了人生的春天,共勉!!!
1.ArrayList继承体系


                               
登录/注册后可看大图

ArrayList中又称动态数组,底层是基于数组实现的列表,与数组的区别在于,其具备动态扩展能力从继承体系图中可看出。ArrayList中
公共类 ArrayList 扩展 AbstractList        实现List < E >、RandomAccess、Cloneable、java.io。可序列化{        ...}复制代码实现了List、RandomAccess、Cloneable、java.io.Serializable等接口
2. ArrayList 属性

/** * 默认初始容量。 *默认容量 */私有静态终极 int DEFAULT_CAPACITY = 10 ;/** ·共享空 阵列 实例用于为 空的情况。 * 空数组,如果上限的容量为0时使用 */私有静态终极对象[] EMPTY_ELEMENTDATA = {};/** ·共享空 阵列 实例用于为 默认尺寸空实例。 * 我们将其与 EMPTY_ELEMENTDATA 区分开来,以了解添加第一个元素时要膨胀多少。 *默认空容量的数组,长度为0,第一个容量时间使用,一个时间会初始添加为默认容量巨细 */私有静态终极对象[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};/** *该阵列到其中的元件缓冲器的存储ArrayList中。 *容量的该ArrayList是长度的此阵列缓冲器。任何 *带有 elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA 的空ArrayList * 将在添加第一个元素时扩展为DEFAULT_CAPACITY 。 * 聚集中真正存储数据元素的数组容器 */瞬态对象[] elementData; // 非私有以简化嵌套类访问/** *巨细的该ArrayList(数量的它包罗的元素)。 *聚集中元素的个数 * @串行 */私有整数巨细;复制代码
3.ArrayList构造方法

/** * 构造一个具有指定初始容量的空列表。 * 构造具有指定初始能力的空数组 * * @param initialCapacity 列表初始容量列表的初始容量 * @throws IllegalArgumentException 如果指定的初始容量为负 * *对应初始初始容量,如果大于0就初始化元素数据为巨细,如果等于0就使用EMPTY_ELEMENTDATA空数组, * 如果小于0 非常。 */ // ArrayList(int initialCapacity)构造方法public  ArrayList ( int initialCapacity)  {     if (initialCapacity > 0 ) {         this .elementData = new Object[initialCapacity];    } else  if (initialCapacity == 0 ) {         this .elementData = EMPTY_ELEMENTDATA;    } else {         throw  new IllegalArgumentException( "不合理的初识能力:" +                初始容量);    }}复制代码
/**  * 构造一个初始容量为 10 的空列表。  * 构造一个终极能力为10的空数组  *  * 不传初始空,初始化为DEFAULTCAPACITY_EMPTY_ELEMENTDATA数组,  * 会在添加第一个元素的时候扩容为默认的巨细,即10。  */  public  ArrayList ()  {      this .elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }复制代码
/** * 构造一个包罗指定元素的列表 * 聚集,按照聚集返回的顺序 * 迭代器。 * 把聚集的元素初始化到ArrayList中 * * @param c 其元素将被放入此列表的聚集 * @throws NullPointerException 如果指定的聚集为空 */ public ArrayList(Collection




欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4