对于自定义的数据结构来说,如果想使用Iterator(迭代器)来遍历数据,就需要定义自己的Iterator。
下面的例子用数组来存储数据。接口Iterator包含三个方法:hasNext()、next()和remove()。remove()方法是可选的。
import java.util.*;
public class ArrayIterator implements Iterator {
protected Object[] data = { "one", "two", "three" };
protected int index = 0;
public ArrayIterator(Object[] d) {
data = d;
}
public ArrayIterator() {
}
public boolean hasNext() {
return (index < data.length);
}
public Object next() { //返回数据结构的下一个元素
if(index>=data.length)
throw new IndexOutOfBoundsException("only "+data.length+" elements");
return data[index++];
}
public void remove() { //删除当前对象,不支持
throw new UnsupportedOperationException("This demo does not implement the remove method");
}
public static void main(String args[]){ //测试
ArrayIterator it=new ArrayIterator();
while(it.hasNext())
System.out.println(it.next());
}
}
运行结果:
C:/java>java ArrayIterator
one
two
three
下面的例子用数组来存储数据。接口Iterator包含三个方法:hasNext()、next()和remove()。remove()方法是可选的。
import java.util.*;
public class ArrayIterator implements Iterator {
protected Object[] data = { "one", "two", "three" };
protected int index = 0;
public ArrayIterator(Object[] d) {
data = d;
}
public ArrayIterator() {
}
public boolean hasNext() {
return (index < data.length);
}
public Object next() { //返回数据结构的下一个元素
if(index>=data.length)
throw new IndexOutOfBoundsException("only "+data.length+" elements");
return data[index++];
}
public void remove() { //删除当前对象,不支持
throw new UnsupportedOperationException("This demo does not implement the remove method");
}
public static void main(String args[]){ //测试
ArrayIterator it=new ArrayIterator();
while(it.hasNext())
System.out.println(it.next());
}
}
运行结果:
C:/java>java ArrayIterator
one
two
three