设计模式中的迭代器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的主要内容,如果未能解决你的问题,请参考以下文章

设计模式—迭代器Iterator模式

迭代器模式(Iterator Pattern)

设计模式——迭代器(Iterator)模式

设计模式中的迭代器Iterator

Java中的Iterator用法

什么是迭代器 iterator