for循环如何迭代到下面代码中的下一个项目

时间:2018-04-03 11:49:20

标签: java

我试图用Java学习Iterator设计模式。下面是迭代器模式实现的代码示例。

public class IteratorDemo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       NameRepository repo=new NameRepository();

       for(Iterator iter=repo.getIterarter(); iter.hasNext();){

           String name=(String) iter.next();

           System.out.println("Name : "+name);
       }


    }

}

interface Container{
    public Iterator getIterarter();
}

interface Iterator{
    public boolean hasNext();
    public Object next();
}



class NameRepository implements Container{
    private String[] names={"A","B","C","D","E","F"};

    @Override
    public Iterator getIterarter() {
        return new NameIterator();
    }

    private class NameIterator implements Iterator{

    int index;
    @Override
    public boolean hasNext() {
        return index < names.length;

    }

    @Override
    public Object next() {
        if(this.hasNext()){
            return names[index++];
        }
        return null;
    }

}
}

这里的输出是A,B,C,D,E,F。我的问题是这个for循环如何迭代到下一个项目?因为似乎代码中没有迭代值,但它仍打印出整个数组

1 个答案:

答案 0 :(得分:1)

请参阅,如果 index&lt; index,则索引每次都在增加names.length **

@Override
    public Object next() {
        if(this.hasNext()){
            return names[index++];
        }
        return null;
    }

**