package com.dong.week1;
import java.util.Arrays;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public void add(Object o){
/**
* ���ж������Ƿ��Ѿ����ˣ�����Ѿ����������ݴ���
*/
if(elementData.length==size){
elementData = Arrays.copyOf(elementData, elementData.length*2+1);
}
elementData[size++]=o;
}
public void add(int index, Object o){
if(index >size || index < 0 ){
throw new ArrayIndexOutOfBoundsException("����Խ��,��ǰ���鳤����"+size+",��������Ԫ�ص�������:"+index);
}
/**
* �����Ѿ����ˣ�������
*/
if(size==elementData.length){
elementData = Arrays.copyOf(elementData, elementData.length*2+1);
}
Object[] elementDataClone = elementData.clone();
System.arraycopy(elementData, index, elementDataClone, index+1, size-index);
elementDataClone[index++]=o;
size++;
elementData = elementDataClone;
}
public Object get(int index){
if(index >=size || index < 0 ){
throw new ArrayIndexOutOfBoundsException("����Խ��,��ǰ���鳤����"+size+",��������Ԫ�ص�������:"+index);
}
return elementData[index];
}
public Object remove(int index){
if(index >=size || index < 0 ){
throw new ArrayIndexOutOfBoundsException("����Խ��,��ǰ���鳤����"+size+",����ɾ��Ԫ�ص�������:"+index);
}
elementData[index]=null;
size--;
Object[] elementDataClone = elementData.clone();
System.arraycopy(elementData, index+1, elementDataClone, index, size-index-1);
elementData = elementDataClone;
return elementData[index];
}
public int size(){
return size;
}
public Iterator iterator(){
return new IteratorArrayList(this);
}
@Override
public String toString() {
return "ArrayList [size=" + size + ", elementData=" + Arrays.toString(elementData) + "]";
}
private class IteratorArrayList implements Iterator{
private ArrayList arrayList;
private int index=0;
public IteratorArrayList(ArrayList arrayList) {
super();
this.arrayList = arrayList;
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return this.arrayList.size() >index;
}
@Override
public Object next() {
// TODO Auto-generated method stub
if(hasNext()){
return this.arrayList.get(index++);
}
return null;
}
}
public static void main(String[] args) {
ArrayList arrayList= new ArrayList();
Iterator iterator= arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}