package task1.basic; import java.util.Arrays; public class MyArrayList implements List { private int size=0; private Object[] elementData=new Object[3]; public void add(Object o){ checkLength(size+1); elementData[size++]=o; } public void checkLength(int minLength){ if(minLength>elementData.length){ grow(minLength); } } public void grow(int minLength){ int oldLength = elementData.length; int newLength = oldLength + oldLength>>1; if(newLength < minLength){ newLength=minLength; } elementData= Arrays.copyOf(elementData, newLength); } public void add(int index ,Object o){ checkLength(size+1); System.arraycopy(elementData, index, elementData, index+1, size-index); elementData[index]=o; size++; } public Object get(int index){ return elementData[index]; } public Object remove(int index){ Object element=elementData[index]; System.arraycopy(elementData, index+1, elementData, index, size-index-1); elementData[size-1]=null; size--; return element; } public int size(){ return size; } public Iterator iterator(){ return new ArrayListIterator(); } class ArrayListIterator implements Iterator{ int pos=0; public boolean hasNext(){ if(elementData[pos]!=null){ return true; } return false; } public Object next(){ return elementData[pos++]; } } public static void main(String[] args){ MyArrayList my=new MyArrayList(); my.add(0); my.add(1); my.add(2,10); my.add(1,11); my.add(3,32); Object ele=my.remove(2); System.out.println(ele); System.out.println(my.get(1)); System.out.println(my.size()); System.out.println("---------"); Iterator it=my.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }