@@ -13,9 +13,7 @@ public class ArrayList implements List {
13
13
private Object [] newElementData ;
14
14
15
15
public void add (Object o ){
16
- if (size >=elementData .length ){//扩容
17
- grow ();
18
- }
16
+ grow ();
19
17
elementData [size ] = o ;
20
18
size ++;
21
19
}
@@ -24,21 +22,15 @@ public void add(int index, Object o){
24
22
if (index >size ){
25
23
throw new IndexOutOfBoundsException ("Index: " +index +",Size:" +size );
26
24
}
27
- if (size >=elementData .length ||index >=elementData .length -1 ){//长度不够需要扩容
28
- grow ();
29
- }
25
+ grow ();
30
26
if (index <size ){//长度足够需要移动
31
27
newElementData = new Object [elementData .length ];
32
28
System .arraycopy (elementData , 0 , newElementData , 0 , index );
33
29
System .arraycopy (elementData , index , newElementData , index +1 , size -index );
34
30
elementData = newElementData ;
35
31
}
36
32
elementData [index ] = o ;
37
- if (index >size ){
38
- size = index +1 ;
39
- }else {
40
- size ++;
41
- }
33
+ size ++;
42
34
}
43
35
44
36
public Object get (int index ){
@@ -66,9 +58,11 @@ public int size(){
66
58
*/
67
59
private void grow (){
68
60
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
+ }
72
66
}
73
67
74
68
0 commit comments