我试图用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
循环如何迭代到下一个项目?因为似乎代码中没有迭代值,但它仍打印出整个数组
答案 0 :(得分:1)
请参阅,如果 index&lt; index,则索引每次都在增加names.length 强> **
@Override
public Object next() {
if(this.hasNext()){
return names[index++];
}
return null;
}
**