package com.coding.basic;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public void add(Object o){
//ÕÒ³ö×îºóÒ»¸ö¿ÕµÄλÖø³Öµ
for(int i=0;i<elementData.length;i++){
if(elementData[i]==null){
elementData[i]=o;
break;
}
if(i==elementData.length){
this.expansion();
elementData[i]=o;
break;
}
}
size++;
}
private void expansion(){
Object[] newElementData = new Object[this.elementData.length+10];
System.arraycopy(elementData, 0, newElementData, 0, elementData.length-1);
this.elementData=newElementData;
}
public void add(int index, Object o){
if(elementData.length<=size){
expansion();
}
System.arraycopy(elementData,index,elementData,index+1,size);
elementData[index]=o;
size++;
}
public Object get(int index){
if(index>=size){
return this.elementData[elementData.length];
}else{
return this.elementData[index];
}
}
public Object remove(int index){
Object object = get(index);
System.arraycopy(elementData,index+1,elementData,index,size-1);
elementData[size-1]=null;
size--;
return object;
}
public int size(){
return size;
}
public Iterator iterator(){
return new Iterator() {
private int nextNum=0;
@Override
public Object next() {
return get(nextNum++);
}
@Override
public boolean hasNext() {
return nextNum>=size?false:true;
}
};
}
}