Skip to content

Commit 8819812

Browse files
authored
Merge pull request onlyliuxin#12 from CheungChanDevCoder/master
第一次作业,By:584709796,史栋栋
2 parents 20b97d0 + cf1bdfb commit 8819812

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed

group05/1377699408/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/bin
2+
.classpath
3+
.project
4+
.settings/
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package list;
2+
3+
import java.util.Arrays;
4+
5+
public class ArrayList<E> {
6+
private transient static int INITIAL_SIZE = 10;
7+
private transient int arrayLength;
8+
private transient int size;
9+
private transient E[] array;
10+
public ArrayList(){
11+
array = (E[]) new Object[INITIAL_SIZE];
12+
arrayLength = INITIAL_SIZE;
13+
}
14+
public ArrayList(int size){
15+
if(size<=0){
16+
throw new IllegalArgumentException("参数不可以小于0");
17+
}
18+
array = (E[])new Object[size];
19+
arrayLength = array.length;
20+
ensureCapacity(size);
21+
this.size = size;
22+
}
23+
public int size(){
24+
return size;
25+
}
26+
public void add(E e){
27+
ensureCapacity(size+1);
28+
array[size] = e;
29+
size++;
30+
}
31+
public E get(int index){
32+
if(index<0 || index > size){
33+
throw new IllegalArgumentException("索引越界");
34+
}
35+
return array[index];
36+
37+
}
38+
public E set(int index, E e){
39+
if(index<0 || index>size){
40+
throw new IllegalArgumentException("索引越界");
41+
}
42+
E result = array[index];
43+
array[index] = e;
44+
return result;
45+
}
46+
private void ensureCapacity(int size){
47+
E[] oldArray = array;
48+
int oldSize = arrayLength;
49+
while(size>arrayLength){
50+
arrayLength = arrayLength + (arrayLength >> 1);
51+
array = Arrays.copyOf(oldArray, arrayLength);
52+
}
53+
}
54+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package test;
2+
3+
import junit.framework.TestCase;
4+
import list.ArrayList;
5+
6+
public class ArrayListTest extends TestCase {
7+
8+
protected void setUp() throws Exception {
9+
super.setUp();
10+
}
11+
12+
protected void tearDown() throws Exception {
13+
super.tearDown();
14+
}
15+
16+
public void testArrayList() {
17+
ArrayList<Integer> a = new ArrayList<Integer>();
18+
assertEquals(a.size(), 0);
19+
}
20+
21+
public void testArrayListInt() {
22+
ArrayList<Integer> a = new ArrayList<Integer>(9);
23+
assertEquals(a.size(), 9);
24+
}
25+
26+
public void testSize() {
27+
ArrayList<Integer> a = new ArrayList<Integer>(9);
28+
assertEquals(a.size(), 9);
29+
ArrayList<Integer> a2 = new ArrayList<Integer>(100);
30+
assertEquals(a2.size(), 100);
31+
}
32+
33+
public void testAdd() {
34+
ArrayList<Integer> a = new ArrayList<Integer>();
35+
for (int i = 0; i < 1000; i++) {
36+
a.add(5);
37+
assertEquals(a.size(), i+1);
38+
assertEquals(a.get(i), new Integer(5));
39+
}
40+
}
41+
42+
public void testGet() {
43+
ArrayList<Integer> a = new ArrayList<Integer>();
44+
a.add(6);
45+
assertEquals(a.get(0), new Integer(6));
46+
47+
}
48+
49+
public void testSet() {
50+
ArrayList<Integer> a = new ArrayList<Integer>();
51+
for (int i = 0; i < 100; i++) {
52+
a.add(56);
53+
}
54+
a.set(5, 66);
55+
assertEquals(a.get(5), new Integer(66));
56+
assertEquals(a.get(7), new Integer(56));
57+
}
58+
59+
}

0 commit comments

Comments
 (0)