本文基于JDK1.8版本的ArrayList,展开源码级别的分析。
Class内部的api:
获取数组的内部组件类型。如果不是数组类型,返回null。
Array内部的api:
创建一个给定类型与长度的数组。
Arrays内部的api:
复制数组并将其转换为给定类型。
先来看下它的构造器。
使用长度为0的Object数组作为存储数据的结构。
elementData:transient Object[]类型,用于存储数据。DEFAULTCAPACITY_EMPTY_ELEMENTDATA:{}。使用长度为给定值的Object数组作为存储数据的结构。
使用长度为集合长度、类型为集合指定类型的数组作为存储数据的结构。
然后看下添加元素的方法。
DEFAULT_CAPACITY :10。正常情况下,容量扩容为原来的1.5倍。
MAX_ARRAY_SIZE:2147483639。MAX_VALUE:2147483647。容量<=2147483639,或者为2147483647。
再来看另一种添加元素的方法。
检查索引的有效性。
获取给定索引的元素。
删除指定索引的元素。
删除列表中第一个元素的值为给定值的元素。