package com; import java.util.NoSuchElementException; public class MyArrayList implements MyList { private static final int DEFAULT_CAPACITY = 10; private int size; private Object[] elementData; public MyArrayList() { this.size = 0; } @Override public boolean add(Object o) { // TODO Auto-generated method stub add(size(), o); return true; } @Override public void add(int index, Object o) { if (elementData.length == size()) { ensureCapacity(size() * 2 + 1); } for (int i = size(); i > index; i--) { elementData[i] = elementData[i - 1]; } elementData[2] = o; size++; } @Override public Object get(int index) { if (index < 0 || index >= size()) { throw new ArrayIndexOutOfBoundsException(); } return elementData[index]; } @Override public Object remove(int index) { if (index < 0 || index >= size()) { throw new ArrayIndexOutOfBoundsException(); } Object value = elementData[index]; for (int i = index; i < size() - 1; i++) { elementData[i] = elementData[i + 1]; } return value; } @Override public int size() { // TODO Auto-generated method stub return size; } /** * ������� * * @Author xuyangyang * @Describe * @date 2017��2��20�� * @param newCapacity */ public void ensureCapacity(int newCapacity) { if (newCapacity < size) { return; } Object[] old = elementData;// elementData = new Object[newCapacity];// �����µ����� for (int i = 0; i < old.length; i++) { elementData[i] = old[i]; } } private class InnerIterator implements MyIterator { private int current = 0; public boolean hasNext() { return current < size(); } @Override public Object next() { if (!hasNext()) { throw new NoSuchElementException(); } return elementData[current++]; } public void remove() { MyArrayList.this.remove(--current); } } }