package banshee; import java.util.Arrays; public class ArrayList { private int size = 0; private Object[] elementData = new Object[100]; public void add(Object o){ ensureCapacity(size + 1); elementData[size++] = o; } public void add(int index, Object o){ rangeCheck(index); ensureCapacity(size+1); System.arraycopy(elementData, index, elementData, index + 1, 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; } public int size(){ return -1; } // public Iterator iterator(){ // //TODO // //���ᡣ���� // return null; // } private void rangeCheck( int index) { if (index >= size || index < 0){ throw new IndexOutOfBoundsException("ָ����index��������"); } } public void ensureCapacity(int minCapacity) { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { //�����µ�������С��Ϊ��ǰ������1.5�� int newCapacity = (oldCapacity * 3) / 2 + 1; if (newCapacity < minCapacity) newCapacity = minCapacity; elementData = Arrays.copyOf(elementData, newCapacity); } } }