自定义迭代器,它用于过滤超过一定长度的字符串的迭代器:
import java.util.Iterator;
import java.util.NoSuchElementException;
public class ShortStringItertor implements Iterator {
private Iterator strings; //需要迭代的字符串迭代器
private String nextShort; //如果没有下一个则为null
private final int maxLen;//需要迭代的长度
public ShortStringItertor(int maxLen, Iterator strings) {
this.maxLen = maxLen;
this.strings = strings;
this.nextShort = null;
}
public boolean hasNext() {
if(nextShort!=null) return true;
while(strings.hasNext()){
nextShort = (String)strings.next();
if(nextShort.length()<=maxLen) return true;
}
nextShort = null;
return false;
}
public Object next() {
if(nextShort==null&&!hasNext()) throw new NoSuchElementException();
String n = nextShort;
nextShort = null;
return n;
}
public void remove() {
}
}
迭代器的使用:
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("asdfsafasfd");
list.add("asdsfd");
list.add("asdfsafad");
list.add("asdfsfd");
list.add("afsafasfhgddfghdg");
list.add("asdfsfd");
list.add("aafasdgfdfgdfgfd");
list.add("asfasfd");
list.add("asfd");
list.add("asdasfd");
Iterator<String> it = new ShortStringItertor(10,list.iterator());
while(it.hasNext()){
System.out.println(it.next());
}
}