Skip to content

Commit dbd3f5c

Browse files
committed
优化ArrayList
1 parent 26a7dd5 commit dbd3f5c

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

group12/2258659044/zj-2017/src/com/coding/basic/ArrayList.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ public class ArrayList implements List {
1313
private Object[] newElementData;
1414

1515
public void add(Object o){
16-
if(size>=elementData.length){//扩容
17-
grow();
18-
}
16+
grow();
1917
elementData[size] = o;
2018
size ++;
2119
}
@@ -24,21 +22,15 @@ public void add(int index, Object o){
2422
if(index>size){
2523
throw new IndexOutOfBoundsException("Index: "+index+",Size:"+size);
2624
}
27-
if(size>=elementData.length||index>=elementData.length-1){//长度不够需要扩容
28-
grow();
29-
}
25+
grow();
3026
if(index<size){//长度足够需要移动
3127
newElementData = new Object[elementData.length];
3228
System.arraycopy(elementData, 0, newElementData, 0, index);
3329
System.arraycopy(elementData, index, newElementData, index+1, size-index);
3430
elementData = newElementData;
3531
}
3632
elementData[index] = o;
37-
if(index>size){
38-
size = index+1;
39-
}else{
40-
size ++;
41-
}
33+
size ++;
4234
}
4335

4436
public Object get(int index){
@@ -66,9 +58,11 @@ public int size(){
6658
*/
6759
private void grow(){
6860

69-
newElementData = new Object[size+GENE];
70-
System.arraycopy(elementData, 0, newElementData, 0, elementData.length);
71-
elementData = newElementData;
61+
if(size>=elementData.length){//长度不够需要扩容
62+
newElementData = new Object[size+GENE];
63+
System.arraycopy(elementData, 0, newElementData, 0, elementData.length);
64+
elementData = newElementData;
65+
}
7266
}
7367

7468

0 commit comments

Comments
 (0)