Skip to content

Commit cc425cd

Browse files
committed
update ArrayList.md
1 parent d3edd36 commit cc425cd

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

docs/java/collection/ArrayList.md

+14-11
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,25 @@ public class ArrayList<E> extends AbstractList<E>
6868
private int size;
6969

7070
/**
71-
* 带初始容量参数的构造函数。(用户自己指定容量
71+
* 带初始容量参数的构造函数(用户可以在创建ArrayList对象时自己指定集合的初始大小
7272
*/
7373
public ArrayList(int initialCapacity) {
7474
if (initialCapacity > 0) {
75-
//创建initialCapacity大小的数组
75+
//如果传入的参数大于0,创建initialCapacity大小的数组
7676
this.elementData = new Object[initialCapacity];
7777
} else if (initialCapacity == 0) {
78-
//创建空数组
78+
//如果传入的参数等于0,创建空数组
7979
this.elementData = EMPTY_ELEMENTDATA;
8080
} else {
81+
//其他情况,抛出异常
8182
throw new IllegalArgumentException("Illegal Capacity: "+
8283
initialCapacity);
8384
}
8485
}
8586

8687
/**
87-
*默认构造函数,DEFAULTCAPACITY_EMPTY_ELEMENTDATA 为0.初始化为10,也就是说初始其实是空数组 当添加第一个元素的时候数组容量才变成10
88+
*默认无参构造函数
89+
*DEFAULTCAPACITY_EMPTY_ELEMENTDATA 为0.初始化为10,也就是说初始其实是空数组 当添加第一个元素的时候数组容量才变成10
8890
*/
8991
public ArrayList() {
9092
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
@@ -94,16 +96,16 @@ public class ArrayList<E> extends AbstractList<E>
9496
* 构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
9597
*/
9698
public ArrayList(Collection<? extends E> c) {
97-
//
99+
//将指定集合转换为数组
98100
elementData = c.toArray();
99-
//如果指定集合元素个数不为0
101+
//如果elementData数组的长度不为0
100102
if ((size = elementData.length) != 0) {
101-
// c.toArray 可能返回的不是Object类型的数组所以加上下面的语句用于判断,
102-
//这里用到了反射里面的getClass()方法
103+
// 如果elementData不是Object类型数据(c.toArray可能返回的不是Object类型的数组所以加上下面的语句用于判断)
103104
if (elementData.getClass() != Object[].class)
105+
//将原来不是Object类型的elementData数组的内容,赋值给新的Object类型的elementData数组
104106
elementData = Arrays.copyOf(elementData, size, Object[].class);
105107
} else {
106-
// 用空数组代替
108+
// 其他情况,用空数组代替
107109
this.elementData = EMPTY_ELEMENTDATA;
108110
}
109111
}
@@ -127,21 +129,22 @@ public class ArrayList<E> extends AbstractList<E>
127129
* @param minCapacity 所需的最小容量
128130
*/
129131
public void ensureCapacity(int minCapacity) {
132+
//如果是true,minExpand的值为0,如果是false,minExpand的值为10
130133
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA)
131134
// any size if not default element table
132135
? 0
133136
// larger than default for default empty table. It's already
134137
// supposed to be at default size.
135138
: DEFAULT_CAPACITY;
136-
139+
//如果最小容量大于已有的最大容量
137140
if (minCapacity > minExpand) {
138141
ensureExplicitCapacity(minCapacity);
139142
}
140143
}
141144
//得到最小扩容量
142145
private void ensureCapacityInternal(int minCapacity) {
143146
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
144-
// 获取默认的容量和传入参数的较大值
147+
// 获取“默认的容量”和“传入参数”两者之间的最大值
145148
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
146149
}
147150

0 commit comments

Comments
 (0)