ArrayList:底层为数组,元素有序,存在索引
在jdk1.8之后,它的默认构造函数的长度为0;(之前默认10)
private static final int DEFAULT_CAPACITY = 10;
private static final Object[] EMPTY_ELEMENTDATA = {};
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
三个成员变量控制它的长度初始化值
1、它的默认构造函数长度为null;
2、看它的add()方法:
1、调用第一个方法,给它赋初始值,大小在最小容量和DEFAULT_CAPACITY的值中取最大值
2、比较它的长度和数据长度大小,执行grow()方法
这就是它的扩容机制,他的最大扩容长度为private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
如果还不够,就执行hugeCapacity(minCapacity);方法
集合框架之ArrayList底层长度扩容实现
最新推荐文章于 2022-05-17 14:00:00 发布