package com.github.ipk2015.coding2017.basic.array; import java.util.Arrays; import com.github.ipk2015.coding2017.basic.Iterator; import com.github.ipk2015.coding2017.basic.List; import com.github.ipk2015.coding2017.basic.ListUtils; public class ArrayList implements List { private int size = 0; private Object[] elementData = new Object[100]; public void add(Object o){ add(size,o); } /* * 分两种情况,index的范围为0到size,超出则抛出异常 * */ public void add(int index, Object o){ ListUtils.checkIndexInRange(index,size); if(size==elementData.length){ elementData=Arrays.copyOf(elementData, size+1); } if(index<size){ for(int i=size;i>index;i--){ elementData[i]=elementData[i-1]; } } elementData[index]=o; size++; } public Object get(int index){ ListUtils.checkIndexInRange(index,size-1); return elementData[index]; } public Object remove(int index){ ListUtils.checkIndexInRange(index,size-1); Object object=elementData[index]; for(int i=index;i<size-1;i++){ elementData[i]=elementData[i+1]; } elementData[size-1]=null; size--; return object; } public int size(){ return size; } public Iterator iterator(){ return new Iterator(){ private int currentPos=0; @Override public boolean hasNext() { if(size==0){ return false; }else{ if(currentPos<size){ return true; }else{ return false; } } } @Override public Object next() { Object object= get(currentPos); currentPos++; return object; } }; } }