Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
如果没有Iterator,我们就需要用for循环或while来遍历集合,这样对于不同的集合,遍历方法是不一样的。。。。
而Iterator模式则总是用同一种逻辑来遍历集合:
for(Iterator it = c.iterater(); it.hasNext(); ) { ... }
通过源码可以看出:
public interface Iterator {
boolean hasNext();
Object next();
void remove();
}
依赖前两个方法就能完成遍历,典型的代码如下:
for(Iterator it = c.iterator(); it.hasNext(); ) {
Object o = it.next();
// 对o的操作...
}
在JDK1.5中,还对上面的代码在语法上作了简化:
// Type是具体的类型,如String。
for(Type t : c) {
// 对t的操作...
}
经过Iterator迭代过的每种集合,他们实现了Iteator接口,还是可以返回自己集合类型,如Array可能返回ArrayIterator,Set可能返回SetIterator,Tree可能返回TreeIterato
|