简单模拟ArrayList-迭代器设计模式-马士兵设计模式教程

import java.util.Iterator;
public class MyArrayList<E> implements Iterable<E>{
	public static int InitSize=2;
	private Object[] elementData=new Object[InitSize];
	private static int size;
	public <E> void add(E e){
		if(size>=InitSize){//如果超出集合的大小,则每次扩充1.5倍
			InitSize=InitSize+(InitSize/2==0?1:InitSize/2);
			Object[] elementTemp=new Object[InitSize];
			System.arraycopy(elementData, 0,elementTemp , 0, size);
			elementData=elementTemp;
		}
		elementData[size]=e;
		size++;
	}
	public E get(int index){
		if(index<0 || index>=size){
			throw new ArrayIndexOutOfBoundsException("出错");
		}
		return (E)elementData[index];
	}
	public static int getSize(){
		return size;
	}
	//实现Iterable接口
	//使用Iterator进行遍历元素
	//不实现的话该类就无法进行增强for循环的操作
	public Iterator<E> iterator() {
		return new Itr();
	}
	class Itr implements Iterator<E>{

		int index=0;
		public boolean hasNext() {
			return index<size;
		}

		public E next() {
			return get(index++);
		}

		public void remove() {
			
		};
		
	}
}

public class Test {
public static void main(String[] args) {
	MyArrayList<String> list=new MyArrayList<String>();
	list.add("wwww我");
	list.add("a");
	list.add("为");
	list.add("人");
	list.add("g");
	list.add("盘");
	list.add("才v");

	System.out.println("集合元素个数:"+list.getSize());
	System.out.println("集合大小:"+list.InitSize);
	for(Object s:list){
		System.out.println(s);
	}
}
/**运行结果:
 	集合元素个数:7
	集合大小:9
	wwww我
	a
	为
	人
	g
	盘
	才v
 */
}

本文转自: http://blog.csdn.net/wxwzy738/article/details/7604801

你可能感兴趣的:(简单模拟ArrayList-迭代器设计模式-马士兵设计模式教程)