设计模式中的迭代器Iterator
Posted Fly博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式中的迭代器Iterator相关的知识,希望对你有一定的参考价值。
任何容器的底层数据结构只有两种:一种是数组;另一种是链表。例如:list,set,map,二叉树,图等容器。访问容器使用Iterator迭代器。
public interface Collection_ { void add(Object o); int size(); Iterator_ iterator(); } public interface Iterator_ { boolean hasNext(); Object next(); } public class ArrayList_ implements Collection_{ private Object[] objects=new Object[10]; private int currentIdex=0; @Override public void add(Object o) { if(currentIdex==objects.length){ Object[] newObjects=new Object[objects.length * 2]; System.arraycopy(objects,0,newObjects,0,objects.length); objects=newObjects; } objects[currentIdex]=o; currentIdex++; } @Override public int size() { return currentIdex; } @Override public Iterator_ iterator() { return new CommenArrayList(); } public class CommenArrayList implements Iterator_{ private int index=0; @Override public boolean hasNext() { if(index>=currentIdex){ return false; } return true; } @Override public Object next() { Object o=objects[index]; index++; return o; } } } public class main { public static void main(String[] args) { Collection_ list=new ArrayList_(); for (int i = 0; i < 15; i++) { list.add(new String("你好"+i)); } //使用迭代器遍历 Iterator_ it=list.iterator(); while (it.hasNext()){ Object o=it.next(); System.out.println(o); } } }
jdk中的ArrayList也是如此设计。main方法中我们只需要更改ArrayList_,其它代码都不需要改变。
以上是关于设计模式中的迭代器Iterator的主要内容,如果未能解决你的问题,请参考以下文章