(文章翻译自)
迭代器模式用于迭代遍历一个集合对象。它是一个经常被用到的模式,你可能以前使用过它。不管在任何时候你看见一些方法像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{ boolean hasNext(); E next(); void remove();}
还有其他的类可以创建一个迭代器,例如 TreeSet#iterator(), HashSet#iterator(), 等等。