package hw1;
import java.util.Arrays;
// 先不考虑线程安全,增删改查
// 业务导向就是复制
public class ArrayList implements List {
// 又想到阁成员函数
private int size = 0; // 属于elementData的属性
// 暂时不要泛型,以后优化
private Object[] elementData = new Object[10];
public void add(Object o) {
elementData = grow(elementData, 10);
elementData[size()] = o;
}
public void add(int index, Object o) {
elementData = grow(elementData, 10);
for (int i = elementData.length-1; i >= index ; i--) {
elementData[i+1] = elementData[i];
}
elementData[index] = o;
}
public Object get(int index) {
// 入境检查
if (index >= elementData.length) {
System.out.println("如何抛出数组越界异常?");
}
return elementData[index];
}
public Object remove(int index) {
// 入境检查
if (index >= elementData.length || index < 0) {
System.out.println("如何抛出数组越界异常?");
}
for (int i = index; i < elementData.length; i++) {
elementData[i-1] = elementData[i];
}
return null;
}
public int size() { // 元素的个数
// return -1;
return size;
}
public void print() {
for (int i = 0; i < size(); i++) {
System.out.println(elementData[i]);
}
}
// 注意有返回值
private Object[] grow(Object[] src, int size) {
if (size() < src.length) {
return src; // 说明至少还能再放一个
} else {
// 放不下了,则增加10个,数据结构是层层服务的
return Arrays.copyOf(src, src.length+size);
}
}
}