package com.coding.basic; import java.util.Arrays; public class ArrayList implements List { private int size = 0; private Object[] elementData = new Object[5]; public void add(Object o){ if(++size > elementData.length){ elementData = Arrays.copyOf(elementData, elementData.length*2); } elementData[size-1] = o; } public void add(int index, Object o){ Object[] tmp = new Object[elementData.length]; if(index<0 || index >elementData.length-1){ return; } if(++size > elementData.length){ elementData = Arrays.copyOf(elementData, elementData.length*2); tmp = new Object[elementData.length]; } System.arraycopy(elementData, 0, tmp, 0, index); System.arraycopy(elementData, index, tmp, index+1, size-index); tmp[index] = o; elementData=tmp; } public Object get(int index){ if(index<0 || index >elementData.length-1){ return null; } return elementData[index]; } public Object remove(int index){ Object o=null; o = elementData[index]; if(--size%5 == 0){ elementData = Arrays.copyOf(elementData, elementData.length/2); }else if(index == size-1){ elementData[index] = null; }else if(index == size-1){ System.arraycopy(elementData, index+1, elementData, index, size-index-1); } return o; } public int size(){ return size; } public Iterator iterator(){ return new ArrayIterator(this); } }