package com.coding.basic;
import java.util.Arrays;
public class ArrayList<T> implements List<T> {
private int size = 0;
private Object[] elementData = new Object[10];
private int increaseSize = 10;
private void increaseArray() {
Object[] newData = Arrays.copyOf(elementData, elementData.length + increaseSize);
elementData = newData;
}
public void add(T o){
if (size == elementData.length) {
increaseArray();
elementData[size++] = o;
} else {
elementData[size++] = o;
}
}
public void add(int index, T o){
if (index < 0 || index > size) {
System.out.println("错误提示:index > size || index < 0");
return;
}
T temp;
for (int i = index; i < size; i++) {
temp = (T) elementData[i];
elementData[i] = o;
o = temp;
}
elementData[size ++] = o;
}
public T get(int index){
if (index < 0 || index > size ){
return null;
}
return (T) elementData[index];
}
public T remove(int index){
if (index < 0 || index > size ){
return null;
}
Object result = elementData[index];
for (int i = index; i < size-1; i++) {
elementData[i] = elementData[i + 1];
}
elementData[size-1] = null;
size --;
return (T) result;
}
public int size(){
return size;
}
public Iterator iterator(){
return new Iterator() {
private int cusor = 0;
@Override
public Object next() {
if (!hasNext()) {
System.out.println("next: !hasNext");
return null;
}
return elementData[cusor ++];
}
@Override
public boolean hasNext() {
return cusor < size;
}
};
}
}