public class ArrayList<T> implements List<T> { //private fields private int size = 0; private Object[] elementData = new Object[100]; //check if list is empty public boolean isEmpty() { return size == 0; } public void add(Object o){ elementData[size++] = o; } public void add(int index, T o){ /* Not familiar with array copy, copied from GitMori */ System.arraycopy(elementData, index, elementData, index + 1, size-index); elementData[index] = o; size++; } public T get(int index){ return (T) elementData[index]; } public T remove(int index){ T t = this.get(index); int position = size - index - 1; //why ? if (position > 0){ System.arraycopy(elementData, index+1, elementData, index, position); } elementData[--size] = null; return t; } public int size(){ return size; } //?? public Iterator iterator(){ return null; } }