模拟ArrayList
最近学习集合类,感觉光看总记不住,就边学习,边练习。于是自己模拟了下常用的 ArrayList 类。名字为MyArrayList。
亮点是使用内部类返回 Iterator。
1:首先模拟 Iterator 接口。
/** * @author: 孟志昂 * @email:mengzhiang@gmail.com*/interface MyIterator {Object next();boolean hasNext();} 2:然后模拟 Collecton 接口
/** * @author: 孟志昂 * @email:mengzhiang@gmail.com*/public interface MyCollection {void add(Object o);int size();}
3:最后模拟 Arraylist 类
/** * @author: 孟志昂 * @email:mengzhiang@gmail.com*/public class MyArrayList implements MyCollection{private Object[] items ;//填充的时候用来表示填充到哪个位置。private static int fill_index = 0;public MyArrayList(int length){items = new Object;}public void add(Object o){items = o;}public int size(){return items.length;}public MyIterator iterator(){return new MyArrayListIterator();}/** * 通过内部类实现iterator方法 */class MyArrayListIterator implements MyIterator{//用来保存遍历到哪一个 int search_index = 0;public boolean hasNext() {return search_index!=items.length;}public Object next() {return items;}}}
4:最后测试类
import java.util.ArrayList;import java.util.List;/** * @author: 孟志昂 * @email:mengzhiang@gmail.com*/public class Test {public static void main(String[] args) {MyArrayList myt = new MyArrayList(10);myt.add(1);myt.add(2);MyIterator mi = myt.iterator(); while(mi.hasNext()){System.out.println(mi.next());}//ArrayList创建时不用声明大小,因为ArrayList会自动扩充//ArrayList的iterator来自父类AbstractList,//而父类的iterator也是通过内部类来实现Iterator接口返回Iterator实例List list = new ArrayList();list.iterator();}}
页:
[1]