package GithubWork; import java.util.Arrays; public class ArrayList implements List { private int size = 0; private Object[] elementdata = new Object[100]; public void add(Object o) { if (elementdata.length <= size) { ensureCapacity(size + 1); } elementdata[size++] = o; } private void ensureCapacity(int minCapacity) { int oldCapacity = elementdata.length; if (oldCapacity < minCapacity) { int newCapacity = (int) (oldCapacity * 1.5); if (newCapacity < minCapacity) newCapacity = minCapacity; elementdata = Arrays.copyOf(elementdata, newCapacity); } } public void add(int index, Object o) { if (index > size || index < 0) { throw new IndexOutOfBoundsException(); } ensureCapacity(size + 1); System.arraycopy(elementdata, index, elementdata, index, size - index); elementdata[index] = o; size++; } public Object get(int index) { RangeCheck(index); return elementdata[index]; } public Object remove(int index) { RangeCheck(index); Object oldvalue = elementdata[index]; int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementdata, index + 1, elementdata, index, numMoved); elementdata[--size] = null; return oldvalue; } private void RangeCheck(int index) { if (index >= size) throw new IndexOutOfBoundsException(); } public int size() { int i; for (i = 0; i < elementdata.length; i++) { size++; if (null == elementdata[i]) { break; } } return size; } }