ArrayList模拟实现
import java.util.Iterator;import java.util.NoSuchElementException;/** * ArrayList模拟实现 * * @author Jelly * * @param <T> */public class MyArrayList<T> implements Iterable<T> {private static final int DEFAULE_CAPACITY = 10;private int theSize;private T[] theItems;public MyArrayList() {clear();}public void clear() {theSize = 0;ensureCapacity(DEFAULE_CAPACITY);}public int size() {return theSize;}public boolean isEmpty() {return size() == 0;}public void trimToSize() {ensureCapacity(size());}public T get(int idx) {if (idx < 0 || idx >= size()) {throw new ArrayIndexOutOfBoundsException();}return theItems[idx];}public T set(int idx, T newVal) {if (idx < 0 || idx >= size()) {throw new ArrayIndexOutOfBoundsException();}T old = theItems[idx];theItems[idx] = newVal;return old;}public boolean add(T t) {add(size(), t);return true;}public void add(int idx, T t) {if (theItems.length == size()) {ensureCapacity(size() * 2);}for (int i = size(); i > idx; i--) {theItems[i] = theItems[i - 1];}theItems[idx] = t;theSize++;}public T remove(int idx) {T t = theItems[idx];for (int i = idx; i < size()-1; i++) {theItems[i]=theItems[i+1];}theSize--;return t;}@SuppressWarnings("unchecked")public void ensureCapacity(int newCapacity) {if (newCapacity < DEFAULE_CAPACITY) {return;}T[] old = theItems;theItems = (T[]) new Object[newCapacity];for (int i = 0; i < size(); i++) {theItems[i] = old[i];}}@Overridepublic Iterator<T> iterator() {return new ArrayListIterator();}public class ArrayListIterator implements Iterator<T> {private int current = 0;@Overridepublic boolean hasNext() {return current < size();}@Overridepublic T next() {if (!hasNext()) {throw new NoSuchElementException();}return theItems[current++];}@Overridepublic void remove() {MyArrayList.this.remove(--current);}}}