package other;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
/*
 * ArrayList泛型类的实现
 */
public class MyArrayList<AnyType> implements Iterable<AnyType> {
	private static final int DEFAULT_CAPACITY = 10;
	private int theSize;
	private AnyType[] theItems;
	public MyArrayList() {
		clear();
	}
	public void clear() {
		theSize = 0;
		ensureCapacity(DEFAULT_CAPACITY);
	}
	private int size() {
		return theSize;
	}
	public boolean isEmpty() {
		return size() == 0;
	}
	public void trimToSize() {
		ensureCapacity(size());
	}
	public AnyType get(int index) {
		if (index < 0 || index >= size()) {
			throw new ArrayIndexOutOfBoundsException();
		}
		return theItems[index];
	}
	private AnyType set(int index, AnyType newVal) {
		if (index < 0 || index >= size()) {
			throw new ArrayIndexOutOfBoundsException();
		}
		AnyType old = theItems[index];
		theItems[index] = newVal;
		return old;
	}
	public void ensureCapacity(int newCapacity) {
		if (newCapacity < theSize) {
			return;
		}
		AnyType[] old = theItems;
		theItems = (AnyType[]) new Object[newCapacity];
		for (int i = 0; i < size(); i++) {
			theItems[i] = old[i];
		}
	}
	public void add(int index, AnyType x) {
		if (theItems.length == size()) {
			ensureCapacity(size() * 2 + 1);
		}
		for (int i = theSize; i < index; i--) {
			theItems[i] = theItems[i - 1];
		}
		theItems[index] = x;
		theSize++;
	}
	public boolean add(AnyType x) {
		add(size(), x);
		return true;
	}
	public AnyType remove(int index) {
		AnyType removedItem = theItems[index];
		for (int i = index; i < size() - 1; i++) {
			theItems[i] = theItems[i + 1];
		}
		theSize--;
		return removedItem;
	}
	public Iterator<AnyType> iterator() {
		return new ArrayListIterator();
	}
	private class ArrayListIterator implements Iterator<AnyType> {
		private int current = 0;
		public boolean hasNext() {
			return current < size();
		}
		public AnyType next() {
			if (!hasNext()) {
				throw new NoSuchElementException();
			}
			return theItems[current++];
		}
		public void remove() {
			MyArrayList.this.remove(--current);
		}
	}
}
原文:http://www.cnblogs.com/yoyohong/p/5651808.html