import java.util.Arrays;
public class ArrayList implements List {
private int size = 0;
private int length=3;
private Object[] elementData = new Object[length];
public void add(Object o){
if(size>=length){
grow(100);
}
elementData[size]=o;
size++;
}
public void add(int index, Object o){
size++;
if(size>=length){
grow(100);
}
System.arraycopy(elementData,index,elementData,index+1,size-index-1);
elementData[index]=o;
}
public Object get(int index){
if(index<size)
return elementData[index];
throw new IndexOutOfBoundsException();
}
public Object remove(int index){
//越界
if(index>=size)
throw new IndexOutOfBoundsException();
size--;
Object a=elementData[index];
//刚好最后一个
if (index+1==size){
return a;
}
System.arraycopy(elementData,index+1,elementData,index,size);
return a;
}
public int size(){
return size;
}
public Iterator iterator(){
return new ArrayListIterator();
}
private class ArrayListIterator implements Iterator{
private int index=0;
@Override
public boolean hasNext() {
if(index+1<size){
index++;
return true;
}
return false;
}
@Override
public Object next() {
return elementData[index];
}
}
private void grow(int increase){
//return Arrays.copyOf(src,src.length+size);
Object[] target=new Object[length+increase];
System.arraycopy(elementData,0,target,0,length);
elementData= target;
length=length+increase;
}
public String toString(){
return Arrays.toString(Arrays.copyOf(elementData,size));
}
public static void main(String[] arg){
ArrayList a=new ArrayList();
a.add(0);
a.add(1);
a.add("2");
a.add("3");
a.add("4");
a.add("5");
a.add("six");
a.add("七");
a.add(8);
Iterator iterator=a.iterator();
while (iterator.hasNext())
System.out.println(iterator.next());
/*System.out.println(a.remove(3));
System.out.println(a.size());
System.out.println(a);*/
//System.out.println(a.get(3));
//System.out.println(a.get(99));
}
}