迭代器模式用于迭代对象的集合。这是一种常用的模式,您以前可能已经使用过。每当您看到诸如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包中,Iterator接口的定义如下:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
然后是可以创建迭代器的类,例如TreeSet#iterator(),HashSet#iterator()等。