package list;
import java.util.Arrays;
public class ArrayList<E> {
private transient static final int INITIAL_SIZE = 10;
private transient int arrayLength;
private transient int size;
private transient E[] array;
public ArrayList(){
array = (E[]) new Object[INITIAL_SIZE];
arrayLength = INITIAL_SIZE;
}
public ArrayList(int size){
if(size<=0){
throw new IllegalArgumentException("参数不可以小于0");
}
array = (E[])new Object[size];
arrayLength = array.length;
ensureCapacity(size);
this.size = size;
}
public int size(){
return size;
}
public void add(E e){
ensureCapacity(size+1);
array[size] = e;
size++;
}
public E get(int index){
if(index<0 || index > size){
throw new IllegalArgumentException("索引越界");
}
return array[index];
}
public E set(int index, E e){
if(index<0 || index>size){
throw new IllegalArgumentException("索引越界");
}
E result = array[index];
array[index] = e;
return result;
}
public void ensureCapacity(int size){
E[] oldArray = array;
int oldSize = arrayLength;
while(size>arrayLength){
arrayLength = arrayLength + (arrayLength >> 1);
}
if(oldSize!=arrayLength){
array = Arrays.copyOf(oldArray, arrayLength);
}
}
}