package com.tiaozaoj; import java.util.Arrays; public class NewArrayList { private int size = 0; private Object[] elementData = new Object[100]; //ֱ���ں������ public void add(Object o){ //���жϸ������Ƿ����� if(this.size == elementData.length){ this.grow(elementData,5); } this.elementData[size] = o; this.size++; } private void grow(Object[] src,int length){ this.elementData = Arrays.copyOf(src, src.length+length); } public void add(int index,Object o){ this.verifyIndex(index); //���жϸ������Ƿ����� if(this.size == elementData.length){ this.grow(elementData,5); } for(int i=size;i>index;i--){ this.elementData[i+1] = this.elementData[i]; } this.elementData[index] = o; this.size++; } private void verifyIndex(int index){ try{ if(index <0 || index > this.size) throw new Exception("�±�Խ��"); }catch(Exception e){ e.printStackTrace(); } } public Object get(int index){ this.verifyIndex(index); return this.elementData[index]; } public Object remove(int index){ Object o = elementData[index]; this.verifyIndex(index); for(int i=index;i<size;i++){ this.elementData[i] = this.elementData[i+1]; } this.size--; return o; } public int size(){ return this.size; } public NewIterator iterator(){ return new ArrayListIterator(this); } private class ArrayListIterator implements NewIterator{ NewArrayList l = null; int pos = 0; private ArrayListIterator(NewArrayList l){ this.l = l; } public boolean hasNext() { // TODO �Զ����ɵķ������ return pos < l.size(); } public void remove(){ this.l.remove(pos); } public Object next() { // TODO �Զ����ɵķ������ return l.get(pos++); } } }