门的迭代器 <<interface>>Iterator,我们可以对某个序列实现 该interface,来提供标准的Java迭代器。
<<interface>>Iterator.java
package java.util;
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
Java中设计与使用迭代器(3)
时间:2011-03-24 zhangjunhd
我们在Links2.java的基础上,重新设计并使用实现标准的 Iterator接口方法。
Links3.java
package com.zj.iterator.standard;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Links3<T> {
private List<T> items = new ArrayList<T>();
public void add(T x) {
items.add(x);
}
public Iterator<T> iterator() {
return new Iterator<T>() {
private int index = 0;
public boolean hasNext() {
return index < items.size();
}
public T next() {
return items.get(index++);
}
public void remove() { // Not implemented
throw new UnsupportedOperationException ();
}
};
}
public static void main(String[] args) {
Links3<Integer> links = new Links3<Integer>();
for (int i = 1; i < 6; i++)
links.add(i);
// use Standard Iterator
Iterator<Integer> myItr = links.iterator ();
while (myItr.hasNext())
System.out.print(myItr.next() + " ");
}
}
3.Java迭代器与Foreach语法
Java中还提供了一个Iterable接口,该接口要求提供一个标准 的Iterator实现。
<<interface>>Iterable.java
package java.lang;
import java.util.Iterator;
public interface Iterable<T> {
Iterator<T> iterator();
}
只要实现了该接口,就可以通过Foreach语法遍历你的底层序列 。Links4.java实现了Iterable接口,则就可以使用Foreach语法遍 历它的底层序列。
Links4.java
package com.zj.iterator.standard;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Links4<T> implements Iterable<T> {
private List<T> items = new ArrayList<T>();
public void add(T x) {
items.add(x);
}
public Iterator<T> iterator() {
return new Iterator<T>() {
private int index = 0;
public boolean hasNext() {
return index < items.size();
}
public T next() {
return items.get(index++);
}
public void remove() { // Not implemented
throw new UnsupportedOperationException ();
}
};
}
public static void main(String[] args) {
Links4<Integer> links = new Links4<Integer>();
for (int i = 1; i < 6; i++)
links.add(i);
// use Foreach
for (Integer integer : links)
System.out.print(integer + " ");
}
}
Java中设计与使用迭代器(4)
时间:2011-03-24 zhangjunhd
你也可以提供该接口的多个不 |