package com.louisly.java; import com.louisly.java.LYIterator; public class LYArrayList { private Object[] elementData = new Object[10]; private int currentCount = 0; public void addObject(Object obj) { if (currentCount >= elementData.length) { grow(); } elementData[currentCount] = obj; currentCount++; } public boolean removeObject(Object obj) { boolean existObj = false; int removeIndex = -1; int index = currentCount; for (int i = 0; i < index; i++) { Object element = elementData[i]; boolean remove = false; if (element != null && element.equals(obj)) { elementData[i] = null; existObj = true; remove = true; // �Է�����һ���ĵڶ���Ԫ�� if (removeIndex == -1) { removeIndex = i; } currentCount--; } // ��Ԫ����ǰ�ƶ� if (!remove) { elementData[removeIndex] = element; elementData[i] = null; removeIndex++; } } return existObj; } public boolean removeAtIndex(int index) { if (index > currentCount) { return false; } elementData[index] = null; for (int i = index+1; i < currentCount; i++) { elementData[i-1] = elementData[i]; elementData[i] = null; } currentCount--; return true; } public void grow() { Object[] target = new Object[elementData.length*2]; System.arraycopy(elementData, 0, target, 0, elementData.length); elementData = target; } public Object get(int index) { if (index > currentCount) { return null; } return elementData[index]; } public int size() { return currentCount; } public LYIterator iterator() { return new LYArrayListIterator(this); } private class LYArrayListIterator implements LYIterator { LYArrayList arrayList = null; int position = 0; public LYArrayListIterator(LYArrayList arrayList) { this.arrayList = arrayList; } @Override public boolean hasNext() { return false; } @Override public Object next() { return elementData[position]; } public void remove() { } } }