List
List元素按插入顺序,可插入重复元素,能够通过索引访问元素
1.ArrayList(部分源码)
基本属性
private static final int DEFAULT_CAPACITY = 10;//默认初始空间
private static final Object[] EMPTY_ELEMENTDATA = {};//空数组
private int size;//ArrayList中的元素个数
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};//空数组
transient Object[] elementData; //ArrayList的本质就是该数组
private int size;//数组中元素数
1
2
3
4
5
6
构造器
//指定初始容量
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {//指定初始容量大于0
this.elementData = new Object[initialCapacity];//创建指定容量数组数组
} else if (initialCapacity == 0) {//等于构建空数组
this.elementData = EMPTY_ELEMENTDATA;
} else {//小于0抛出异常
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
//默认创建一个空数组
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
//将集合转为ArrayList
public ArrayList(Collectionc) {
elementData = c.toArray();//其他集合中的实现方法
if ((size = elementData.length) != 0) {//要转换的集合中元素个数不为0
if (elementData.getClass() != Object[].class)//当集合中元素不是Object类型时,转为Object
elementData = Arrays.copyOf(elementData, size, Object[].class);
} else {//集合中不存在元素,创建空数组
this.elementData = EMPTY_ELEMENTDATA;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
添加元素
//在尾部添加元素
public boolean add(E e) {
modCount++;
add(e, elementData, size);
return true;
}
/**
CPU冗余:系统中主处理器并不会经常出现故障,但对称多处理器(SMP)能让多个CPU分担工作以提供某种程度的容错。
下一篇:最后一页