package com.coding.basic;
import java.util.Arrays;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public void add(Object o) {
ensureCapacity(size + 1);
elementData[size++] = o;
}
private void ensureCapacity(int minCapacity) {
if (minCapacity > 100) {
grow(elementData);
}
}
private void grow(Object[] elementData) {
int oldLength = elementData.length;
int newLength = oldLength * 2;
Arrays.copyOf(elementData, newLength);
}
public void add(int index, Object o) {
ensureCapacity(size + 1);
System.arraycopy(elementData, index, elementData, index + 1, size - index);
elementData[index] = o;
}
public Object get(int index) {
if (index < 0 || index > elementData.length) {
throw new IndexOutOfBoundsException();
}
return (Object) elementData[index];
}
public Object remove(int index) {
int lowLength = size - index - 1;
System.arraycopy(elementData, index + 1, elementData, index, lowLength);
elementData[--size] = null;
return (Object) elementData[index];
}
public int size() {
return size;
}
public Iterator iterator() {
return null;
}
}