Java集合源码分析(一)ArrayList

ArrayList概述

1.1特征

1.可以动态增长和缩减的索引序列,基于数组实现,线程不安全
2.封装了一个动态再分配的Object[]数组,每一个类对象都有一个capacity属性,表示封装的Object[]数组长度,向ArrayList中添加元素时,capacity会自动增加。如果想批量加,可使用ensureCapacity,提高性能
3.线程不安全

1.2数据结构

底层数据结构是数组,数组元素是Object

ArrayList源码

2.1继承结构和层次关系

这里做了两层继承,为什么不直接继承AbstractCollection?
接口中全是抽象方法,抽象类中可以有抽象方法,可以有具体实现,利用这一点让AbstractList是实现接口中一些通用方法,而具体类ArrayList继承AbstractList拿到一些通用的方法,实现自己的一些特有方法,这样代码简洁,继承结构最底层的类中通用的方法都抽取出来,减少重复代码,一般情况下一个类上面还有一个抽象类,就是这个作用

猜你喜欢

转载自juejin.im/post/5ecceebc51882543124eec54