ArrayList整理
1,ArrayList特性
ArrayList底层是动态数组,所以根据数组的特性可知:
//可知ArrayList底层实际就是一个数据,通过transient修饰,标识不可以被序列化
transient Object[] elementData;
1),ArrayList中存储元素位置的地址是一串连续的地址值。
2),由于数组有索引,所以ArrayList对于元素的查找与修改效率快;增加与删除效率低,因为需要移动目标元素之后的所有元素。
3),但是在增加元素到最后一个位置与删除最后一个元素效率是高的。
2,ArrayList底层实现的特征
1),ArrayList初始化
//先定义了两个个空数组
private static final Object[] EMPTY_ELEMENTDATA = {
};
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {
};
//再来看看ArrayList的三个构造函数
//1,自己传入数组的初始容量(initialCapacity)
public ArrayList(int initialCapacity) {
//判断我们传入的初始容量是否大于0
if (initialCapacity > 0) {
//如果大于0,则直接使用new关键字创建长度为initialCapacity的数组,并将elementData指向该数组
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
//如果等于0,则将elementData指向之前定义的空数组
this.elementData = EMPTY_ELEMENTDATA;
} else {
//小于0的话就抛出一个非法参数异常
throw new IllegalArgumentException("Illegal Capacity: "+