package Day_2017_2_26_FirstHomework; public class ArrayList { private static final int DEFAULT_SIZE = 10; private static final int MAX_VALUE = 2147483647; private Object[] elementData = new Object[DEFAULT_SIZE]; private Exception Exception; private int size = 0; public ArrayList(){ this(DEFAULT_SIZE); } public ArrayList(int defaultSize) { rangCheckForConstructor(defaultSize); elementData = new Object[defaultSize]; } private void rangCheckForConstructor(int defaultSize) { if(defaultSize<0 || defaultSize>MAX_VALUE){ throw new IndexOutOfBoundsException("��ֵ������"); } } public void add(Object o){ ensureCapacity(); for(int i = 0; i < elementData.length; i++){ if(null == elementData[i]){ elementData[i] = o; break; } } size++; } private void ensureCapacity() { if(size>elementData.length){ elementData = ArrayList.grow(elementData, 10); } } public void add(int index, Object o){ rangeCheckForAdd(index); ensureCapacity(); int k = -1; for(int i = index; i < elementData.length; i++){ if(null==elementData[i]){ k = i-1; break; } } for(int i = k; i >= index;i--){ elementData[i+1] = elementData[i]; } elementData[index] = o; size++; } private void rangeCheckForAdd(int index) { if(index < 0 || index > this.size){// add ��Ԫ��ֻ���� [0,size](���Ը�sizeλ�ò�Ԫ�أ��������Ը�size���Ԫ��) throw new IndexOutOfBoundsException("�±�Խ��"); } } public Object get(int index){ return elementData[index]; } public Object remove(int index){ while(true){ elementData[index] = elementData[index+++1]; if(elementData[index]==null){ break; } } size--; return null; } public int size(){ return -1; } public void getElementData(){ for(int i = 0; i < elementData.length; i++){ System.out.println(elementData[i]); } } public static Object[] grow(Object[] elementData2, int size){ Object []target = new Object[elementData2.length+size]; System.arraycopy(elementData2, 0, target, 0, elementData2.length); return target; } public static void main(String[] args) { ArrayList a = new ArrayList(); a.getElementData(); System.out.println(a.size); } }