(文章翻译自java-design-pattern-iterator)
迭代器模式用于迭代遍历一个集合对象。它是一个经常被用到的模式,你可能以前使用过它。不管在任何时候你看见一些方法像hasNext()和Next(),这个很有可能就是一个迭代器模式。例如,你可以迭代去遍历一个数据库查询记录的列表。
迭代器模式类图
迭代器模式Java代码
interface IIterator{
public boolean hasNext();
public Object next();
}
interface IContainer{
public IIterator createIterator();
}
class RecordCollection implements IContainer{
private String recordArray[] = {"first","second","third","fourth","fifth"};
public IIterator createIterator(){
RecordIterator iterator = new RecordIterator();
return iterator;
}
private class RecordIterator implements IIterator{
private int index;
public boolean hasNext(){
if (index < recordArray.length)
return true;
else
return false;
}
public Object next(){
if (this.hasNext())
return recordArray[index++];
else
return null;
}
}
}
public class TestIterator {
public static void main(String[] args) {
RecordCollection recordCollection = new RecordCollection();
IIterator iter = recordCollection.createIterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}
在JDK中是用迭代器模式
在java.util包中,迭代器接口像下面这样被定义:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
还有其他的类可以创建一个迭代器,例如 TreeSet#iterator(), HashSet#iterator(), 等等。