Skip to content

Commit 4f6fd2e

Browse files
author
lgt
committed
test
1 parent 79eb531 commit 4f6fd2e

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package cn.fyl.first;
2+
3+
/*
4+
* 动态数组
5+
*/
6+
public class ArrayList implements List {
7+
8+
// 记录数组大小
9+
private int size = 0;
10+
11+
// 设数组容量为3
12+
private Object[] elementData = new Object[3];
13+
14+
// 扩容
15+
public void dilatation(int newCapacity) {
16+
17+
if (newCapacity < size) {
18+
return;
19+
}
20+
21+
Object[] old = elementData;
22+
elementData = new Object[newCapacity];
23+
for (int i = 0; i < size; i++) {
24+
elementData[i] = old[i];
25+
}
26+
27+
}
28+
29+
// 插入值
30+
public void add(Object o) {
31+
add(size(), o);
32+
}
33+
34+
// 按索引插入值
35+
public void add(int index, Object o) {
36+
if (elementData.length == size()) {
37+
dilatation(size() * 2 + 1);
38+
}
39+
// 插入的位置小于数组大小,将index位置的值依次向后退一位
40+
for (int i = size; i > index; i--) {
41+
elementData[i] = elementData[i - 1];
42+
}
43+
elementData[index] = o;
44+
size++;
45+
46+
}
47+
48+
// 取值
49+
public Object get(int index) {
50+
51+
if (index > size) {
52+
return null;
53+
} else {
54+
return elementData[index];
55+
}
56+
57+
}
58+
59+
// 按索引删除该值
60+
public Object remove(int index) {
61+
Object o = elementData[index];
62+
// 删除的位置小于数组大小,将index位置后面的值依次向前挪一位
63+
for (int i = index; i < elementData.length - 1; i++) {
64+
elementData[i] = elementData[i + 1];
65+
}
66+
size--;
67+
return o;
68+
}
69+
70+
// 返回数组大小
71+
public int size() {
72+
return size;
73+
}
74+
75+
//迭代器
76+
class MyIterator implements Iterator {
77+
int current = 0;
78+
79+
public boolean hasNext() {
80+
return current < size;
81+
}
82+
83+
public Object next() {
84+
if (hasNext())
85+
return elementData[current++];
86+
else
87+
throw new java.util.NoSuchElementException();
88+
}
89+
90+
}
91+
92+
public static void main(String[] args) {
93+
ArrayList a = new ArrayList();
94+
a.add(0, 1);
95+
a.add(2);
96+
a.add(3);
97+
a.add(4);
98+
a.add(1, 0);
99+
a.remove(3);
100+
ArrayList.MyIterator m = a.new MyIterator();
101+
System.err.println(a.elementData.length);
102+
while(m.hasNext()){
103+
System.out.print(m.next()+" ");
104+
}
105+
}
106+
107+
}

0 commit comments

Comments
 (0)