1.迭代器实例需要的方法
Iterator.java
interface Iterator{
boolean hitEnd();//使用偏移量判断是否到达对象底部
Object getContent();//取出当前元素,偏移量+1
}
2.需要进行迭代的对象实例需要提供的方法
List.java
interface List {
void add( Object obj);
Object get( int index);
int getSize();
Iterator getIterator();//直接在这步填 this ?
}
.
.
3.根据需要迭代对象一定拥有的办法,构造具体的迭代器
ConcreteIterator.java
public class ConcreteIterator{
private List list;
private int index;
public ConcreteIterator( List list){
super();
this.list = list;
}
@Override
public boolean hitEnd(){
if( index >= list.getSize() ){
return true;
}else{
return false;
}
}
@Override
public Object getContent(){
Object object = list.get( index);
index++;
return object;
}
}
4.构造具体的需要迭代对象
Aggregate.java
public class Aggregate implements List{
private Object[] list;
private size = 0;
private index = 0;
public Aggregate(){
lists = new Object[100];//先在方法外声明引用类型变量,再在方法内部,用 new 关键字进行堆栈的连接.
size=0;
index=0;
}//初始化变量.
//依照超类规定必须实现的方法,依次填充
@Override
public Object get( int index){
return lists[ index];
}
@Override
public void add( Object obj){
list[size++]=obj;
}
@Override
public Iterator getIterator(){
return new ConcreteIterator( this);
}
.
.
5.测试
Test.java
public class Test {
pubic static void main( String[] args){
List mList = new Aggregate();
mList.add(1);
mList.add("yi");
mList.add("one");
Iterator iter = mList.getIterator();
while( !iter.hitEnd ){
System.out.println( iter.getContent() );
}