package week1.collection; import java.util.Arrays; public class ArrayList implements List { private int size=0; private Object[] elementData=new Object[100]; public void add(Object o){ add(size,o); } public void add(int index, Object o){ ListUtils.checkIndexRange(index,size); if(size == elementData.length){ elementData = Arrays.copyOf(elementData, elementData.length+50); } if(index < size){ for(int i=size-1;i>=index;i--){ elementData[i+1]=elementData[i]; } } elementData[index] = o; size++; } public Object get(int index){ ListUtils.checkIndexRange(index+1,size); return elementData[index]; } public Object remove(int index){ ListUtils.checkIndexRange(index+1,size); Object object=elementData[index]; for(int i=index;i<size-1;i++){ elementData[i]=elementData[i+1]; } elementData[size-1]=null; // GC回收 size--; return object; } public int size(){ return size; } public Iterator iterator(){ return new Iterator(){ private int cursor=0; @Override public boolean hasNext() { return cursor!=size; } @Override public Object next() { int i=cursor; cursor++; return elementData[i]; } }; } }