package com.coding.basic; import java.util.Objects; public class ArrayList implements List { private int size = 0; private Object[] elementData = new Object[5]; public void add(Object o) { if (size == elementData.length) { Object[] newArr = new Object[elementData.length * 2]; System.arraycopy(newArr, 0, elementData, 0, elementData.length); elementData = newArr; } elementData[size] = o; size++; } public void add(int index, Object o) { if (index >= size) { throw new RuntimeException("the ArrayList size is short than index"); } elementData[index] = o; } public Object get(int index) { if (index >= size) { throw new RuntimeException("the ArrayList size is short than index"); } return elementData[index]; } public Object remove(int index) { if (index >= size) { throw new RuntimeException("the ArrayList size is short than index"); } Object resultObj = elementData[index]; size--; for (int i = index; i < size; i++) { elementData[index] = elementData[index + 1]; } return resultObj; } public int size() { return size; } public Iterator iterator() { return null; } private class ArrayIterator implements Iterator { private int iteratorIndex = 0; @Override public boolean hasNext() { return iteratorIndex < size; } @Override public Object next() { if (iteratorIndex >= size) { throw new RuntimeException("the index is out of the list"); } return elementData[iteratorIndex++]; } } }