迭代器是用于遍历一个对象的集合。它是一个比较常用的模式,你之前或许就用过。当你看到像hasNext()和next()的东西时,它或许就是一个迭代器模式。例如,你可能遍历一个数据查找记录的列表。
1、迭代器模式类图
2、迭代器模式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());
}
}
}
3、实际应用在JDK
在java.util package,迭代器接口定义如下:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
然后,这些类就可以创建出一个迭代器,例如,TreeSet#iterator(),HashSet#iterator()等。