package com.hmily.learning; public class MyArrayList implements List,Iterator{ private int size = 0; private Object[] elementData = new Object[100]; /** * ���Ԫ�� */ public void add(Object o){ if(size==elementData.length){ Object[] newElementData = new Object[elementData.length+1]; for(int i=0;i<elementData.length;i++){ newElementData[i] = elementData[i]; } newElementData[elementData.length+1]=o; elementData = newElementData; size++; }else{ elementData[size+1]=o; size++; } } /** * ��ָ��λ�����Ԫ�� */ public void add(int index, Object o){ if(size()==elementData.length){ Object[] newElementData = new Object[size()*2+1]; for(int i=0;i<elementData.length;i++){ newElementData[i] = elementData[i]; } elementData = newElementData; } for(int i=size();i>index;i--){ elementData[i]=elementData[i-1]; } elementData[index]=o; size++; } /** * ��ȡԪ�� */ public Object get(int index){ if(index>=size()||index<0){ throw new ArrayIndexOutOfBoundsException(); } return elementData[index]; } /** * �Ƴ�Ԫ�� */ public Object remove(int index){ if(index<0||index>size()){ throw new ArrayIndexOutOfBoundsException(); } Object o=elementData[index]; for(int i=index;i<size();i++){ elementData[i]=elementData[i+1]; } return o; } public int size(){ return this.size; } /** * �����±� */ private int bounds=0; public Iterator iterator(){ return this.iterator(); } /** * */ @Override public boolean hasNext() { return bounds<size(); } @Override public Object next() { if(!hasNext()){ throw new ArrayIndexOutOfBoundsException(); } return elementData[bounds++]; } }