package test;
public class ArrayBox<E> {
private static final int DEFAULT_CAPACITY = 1;
public Object[] array;
private int size = 0;
public ArrayBox() {
array = new Object[DEFAULT_CAPACITY];
}
public ArrayBox(int initialCapacity) {
array = new Object[initialCapacity];
}
private void ensureCapacity(int minCapacity) {
if (minCapacity - array.length > 0) {
this.grow(minCapacity);
}
}
private void grow(int minCapacity) {
int oldLength = array.length;
int newCapacity = oldLength + (oldLength>>1);
if (newCapacity - minCapacity < 0) {
newCapacity = minCapacity;
}
array=this.newArrObjects(newCapacity, array);
}
private Object[] newArrObjects(int arrayLength, Object[] array) {
Object[] newArray = new Object[arrayLength];
Object object=new Object();
for (int i = 0; i < array.length; i++) {
object = array[i];
for (int j = i; j < newArray.length; j++) {
newArray[j] = object;
}
}
return newArray;
}
public void add(Object object) {
this.ensureCapacity(size + 1);
array[size++] = object;
}
public void remove(int index) {
for (int i = index; i < size - 1; i++) {
array[i] = array[i + 1];
}
array[--size] = null;
}
public void update(int index, Object object) {
array[index] = object;
}
public Object get(int index) {
Object object = array[index];
return object;
}
public static void main(String[] args) {
ArrayBox<Integer> box = new ArrayBox<Integer>();
box.add(1);
box.add(2);
box.add(3);
box.update(2, 1);
box.remove(1);
for (int i = 0; i < box.size; i++) {
System.out.println(box.get(i));
}
}
}