package com.coding.basic;
import java.util.*;
public class MyArrayList implements MyList{
//定义Object类型数组
//定义数组元素个数
private int size=0;
private Object [] elementData =new Object[10];
public void add(Object o) {
ensureCapacity(size+1);
elementData[size] = o;
size++;
}
//添加指定位置的元
public void add (int index,Object element){
if(index > size || index < 0)
throw new IndexOutOfBoundsException("数组角标越界");
ensureCapacity(size+1);
//添加指定位置元素
//将该位置后的有元素右
System.arraycopy(elementData,index,elementData,index+1,size-index);
elementData[index] =element;
size++;
}
//可调整数组的容量
public void ensureCapacity (int mincapacity){
int oldlen =elementData.length;
if(mincapacity > oldlen){
int newlen =(oldlen * 3)/2 + 1;
if(mincapacity > newlen)
newlen =mincapacity;
elementData =Arrays.copyOf(elementData,newlen);
}
}
//获取指定位置的元
public Object get(int index){
if(index < 0 || index >size-1){
throw new IndexOutOfBoundsException("数组角标越界");
}
return elementData[index];
}
public Object remove(int index){
if(index >=size || index < 0){
throw new IndexOutOfBoundsException("数组角标越界");
}
Object oldelement =elementData[index];
int numMoved = size-index-1;
if(numMoved > 0){
System.arraycopy(elementData,index+1,elementData,index,numMoved);
}
size--;
return oldelement;
}
public void clear(){
elementData = null;
}
public boolean isEmpty (){
return size == 0;
}
public int size (){
return size;
}
}