软件构造实验需要用到一个迭代器去遍历ADT中保存的信息,然而,听完老师的讲课之后依然无法实现,参考了书和其他博客之后,记录一下如何实现简单的迭代器(这里没有remove的方法)。
Java实现迭代可以分为两种,一种当然是直接在自己的ADT内部写hasNext和next方法,第二种就是实现Java的Iterable接口,这里介绍第二种。
这里用一个数组作为例子:
package iterator;
import java.util.Iterator;
public class NumIterator implements Iterable<Integer>{//首先继承接口
Integer[] a = {1,2,3,4,5};//存储的元素
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {//返回一个迭代器的对象
private int cur = -1;//指针
public boolean hasNext() {//迭代器的方法
return cur != 4;//a数组末尾指针
}
public Integer next() {//迭代器的方法
cur++;
return a[cur];//返回一个元素
}
};
}
}
接下来测试一下:
NumIterator tmp = new NumIterator();
Iterator<Integer> I = tmp.iterator();//定义迭代器
while(I.hasNext()) {
System.out.println(I.next().intValue());
}
输出结果:
1
2
3
4
5
如有错误或者不足欢迎提出