package week1_0306; public class ArrayList implements List { private int size; private Object[] elementData ; public ArrayList() { elementData = new Object[3]; size=-1; } public void add(Object o) { if(size >= elementData.length-1) { Object[] replaceData=new Object[elementData.length+5]; System.arraycopy(elementData, 0, replaceData, 0, elementData.length); elementData = replaceData; } elementData[++size] = o; } public void add(int index, Object o) { Object[] replaceData=new Object[11]; for(int i=0;i<index;i++) { replaceData[i]=elementData[i]; } replaceData[index]=o; for(int i=index+1;i<elementData.length+1;i++) { replaceData[i]=elementData[i-1]; } elementData=replaceData; size++; } public Object get(int index) { if (index<=size && index>=0 && size>=0) return elementData[index]; else return null; } public Object remove(int index) { size--; Object o=elementData[index]; if (index<elementData.length && index>0) { for(int i=index;i<elementData.length-1;i++) { elementData[i]=elementData[i+1]; } elementData[elementData.length-1]=null; return o; } else return null; } public int size() { if(size>=0) return size+1; else return 0; } public Iterator iterator() { return new ArrayListIterator(this); } private class ArrayListIterator implements Iterator { ArrayList l=null; int pos = 0; private ArrayListIterator(ArrayList l) { this.l=l; } @Override public boolean hasNext() { // TODO Auto-generated method stub pos++; if(pos > size) return false; else return true; } @Override public Object next() { // TODO Auto-generated method stub return elementData[pos]; } public Object remove() { return this.l.remove(pos); } } }