public class ResizableArray {
private int length;
private int[] elems;
public ResizableArray(int length){
this.length = length;
this.elems = new int[length];
}
public int lenght(){
return length;
}
public void add (int newValue){
grow();
elems [elems.length-1] = newValue;
}
private void grow(){
int[] newElems = new int[elems.length+1];
copy (elems, newElems);
elems = newElems;
length = length + 1;
}
public void copy (int[] from, int[] to){
System.arraycopy(from, 0, to, 0, from.length);
}
public void add (int index, int newValue){
int [] newElems = new int[elems.length+1];
System.arraycopy(elems, 0, newElems, 0, index);
System.arraycopy(elems, index, newElems, index+1, elems.length-index);
elems = newElems;
elems [index] = newValue;
length++;
}
}