package com.skomefen.list; public class ArrayList implements List { private int size = 0; private Object[] elementData = new Object[100]; private Iterator iterator ; public void add(Object o){ if(size<elementData.length){ elementData[size]=o; size++; return; } Object[] dest = new Object[size+100]; insertofArray(size, o, dest); size++; } public void add(int index, Object o){ if(index>size||index<0){ throw new IndexOutOfBoundsException("index:"+index+"size:"+size); } if(size<elementData.length){ Object[] dest = new Object[elementData.length]; insertofArray(index, o, dest); size++; return; } Object[] dest = new Object[size+100]; insertofArray(index, o, dest); size++; } private void insertofArray(int index, Object o, Object[] dest) { dest[index]=o; System.arraycopy(elementData, 0, dest, 0, index); if((elementData.length-index)!=0){ System.arraycopy(elementData, index, dest, index+1, elementData.length-1-index); if(elementData[elementData.length-1]!=null){ dest[elementData.length]=elementData[elementData.length-1]; } } elementData = dest; } public Object get(int index){ if(index>size||index<0){ throw new IndexOutOfBoundsException("index:"+index+"size:"+size); } return elementData[index]; } public Object remove(int index){ if(index>size||index<0){ throw new IndexOutOfBoundsException("index:"+index+"size:"+size); } Object revalue = elementData[index]; Object[] dest = new Object[elementData.length]; System.arraycopy(elementData, 0, dest, 0, index); System.arraycopy(elementData, index+1, dest, index, elementData.length-1-index); elementData = dest; size--; return revalue; } public int size(){ return size; } public Iterator iterator(){ iterator = new ArrayListIterator(this); return iterator; } }