这是一种非常常见和实用的模式,主要用于顺序的访问某一集合的所有对象。将遍历对象的任务交给迭代器而不是直接操作对象本身。主要是要实现next和hasnext。还可以扩展出多种遍历方式。
简单实现:
迭代器接口:
public interface Iterator<T> {
boolean hasNext();
T next();
}
容器接口:
public interface Container {
Iterator getIterator();
}
实际容器:
public class NameList implements Container{
private String[] names = new String[]{"aaa","bbb","ccc","ddd"};
@Override
public Iterator getIterator() {
return new NameIterator();
}
private class NameIterator implements Iterator<String>{
private int index;
@Override
public boolean hasNext() {
return index < names.length;
}
@Override
public String next() {
if(this.hasNext()){
return names[index++];
}
return null;
}
}
}
测试类
public static void main(String[] args) {
Iterator iterator = new NameList().getIterator();
while (iterator.hasNext())
System.out.println(iterator.next());
}
网友评论