package com.coding.basic;
public class ArrayList implements List {
private int size=0;
private Object[] elementData =new Object[5];
private void ensureCapacityInternal(){
if(size==elementData.length){
Object[] newArray = new Object[size*2];
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
elementData=newArray;
}
}
public void add(Object o){
ensureCapacityInternal();
elementData[size]=o;
size++;
}
public void add(int index, Object o){
ensureCapacityInternal();
if(index<0){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
System.arraycopy(elementData, index, elementData, index+1,size-index );
elementData[index]=o;
size++;
}
public Object get(int index){
if(index<0||index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
return elementData[index];
}
public Object remove(int index){
if(index>=size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}else{
int numMoved=size-index-1;
if(numMoved>0){
System.arraycopy(elementData, index+1, elementData, index, numMoved);
}
elementData[size--] = null;
}
return index;
}
public int size(){
return size;
}
private class Iter implements Iterator {
private int coursor=-1;
public boolean hasNext(){
return coursor+1<size;
}
public String next(){
coursor++;
return (String) elementData[coursor];
}
}
public Iterator iterator(){
return new Iter();
}
public static void main(String[] args){
ArrayList alist = new ArrayList();
alist.add("1");
alist.add("2");
alist.add("3");
alist.add("4");
alist.add(2, "五");
System.out.println(alist.size());
Iterator i = alist.iterator();
while(i.hasNext()){
System.out.print(i.next());
}
}
}