首页 > 其他 > 详细

ArrayList类的实现

时间:2016-07-08 00:04:10      阅读:220      评论:0      收藏:0      [点我收藏+]
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);
		}

	}

}

 

ArrayList类的实现

原文:http://www.cnblogs.com/yoyohong/p/5651808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!