ArrayList源码分析(jdk 1.8)
写在前面 ArrayList相信大家做开发的同学都不陌生,在开发过程中这应该是最常用的数据结构了吧。但是现在是“源码时代”,会用还不够,要知道他的实现原理,本文主要基于jdk1.8对ArrayList源码进行分析。 一、从主要字段开始 值得注意的是,ArrayList内部会有一个modCount字段,但是这个字段是在父类AbstractList中的,代表着修改次数,后面会讲 /** * 默认容量 */ private static final int DEFAULT_CAPACITY = 10; /** * 空元素集,构造函数传入空集合的时候使用 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * 空元素集,默认无参构造函数中使用 */ private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; /** ArrayList真正保存元素的数组,在第一次插入元素的时候扩容 * */ transient Object[] elementData; // non-private to simplify nested class access /** * 当前数组元素个数 * * @serial */ private int size;