public class ArrayList implements List { private int size = 0; private Object[] elementData = new Object[5]; public void add(Object o) { if (size >= elementData.length) { resize(2 * size); } elementData[size] = o; size++; } public void add(int index, Object o) { if (index > size) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } if (size >= elementData.length) { resize(2 * size); } for (int i = size; i > index; i--) { elementData[i] = elementData[i - 1]; } elementData[index] = o; size++; } public Object get(int index) { if (index >= size) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size); } return elementData[index]; } public Object remove(int index) { Object o = elementData[index]; for (int i = index; i < size - 1; i++) { elementData[i] = elementData[i + 1]; } elementData[size - 1] = null; size--; return o; } public int size() { return size; } public Iterator iterator() { return null; } private void resize(int n) { Object[] temp = elementData; elementData = new Object[n]; for (int i = 0; i < temp.length; i++) { elementData[i] = temp[i]; } } }