package com.coding.basic; public class ArrayList implements List { private int size = 0; private Object[] elementData = new Object[100]; public void add(Object o) { IncrementsCapacity(size + 1); elementData[size++] = o; } public void add(int index, Object o) { checkIndex(index); IncrementsCapacity(size + 1); System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = o; size++; } public Object get(int index) { checkIndex(index); return elementData[index]; } public Object remove(int index) { checkIndex(index); Object o = elementData[index]; System.arraycopy(elementData, index + 1, elementData, index, size - index - 1); elementData[--size] = null; return o; } public int size() { return size; } public int length() { return elementData.length; } // ���� private void IncrementsCapacity(int num) { if (num > elementData.length) { int oldCapacity = elementData.length; // ��ǰ���鳤�� int newCapacity = ((num + oldCapacity) * 3) >> 2; // ��ǰ���鳤�ȵ�1.5�� if (newCapacity - num < 0) { newCapacity = num; // �����������Dz���,ֱ����Ϊ����ֵ } Object[] oldelements = elementData; elementData = new Object[newCapacity]; System.arraycopy(oldelements, 0, elementData, 0, size); } } // �±�Խ���ж� private void checkIndex(int index) { if (index >= size || index < 0) throw new IndexOutOfBoundsException("�����±�Խ��"); } }