单个 boolean 测试(对象o)方法
用另一个Iterator初始化
和一个IObjectTest实例:new
FilteringIterator(myIterator,
myTest)。您的FilteringIterator将
然后允许迭代结束
'myIterator',但跳过任何
不通过的对象
“myTest”测试。
由于“hasNext”操作实际上涉及重复移动基础迭代器
直到到达下一个匹配项。问题是如何将迭代器移回原处,因为hasNext不应移动基础迭代器。
最佳答案
您将需要使迭代器成为有状态的。缓存您从hasNext
检索到的最后一个值,并使用next
方法(如果存在)使用它。
private boolean hasCached;
private T cached;
public boolean hasNext() {
if ( hasCached ) return true;
//iterate until you find one and set hasCached and cached
}
public T next() {
if ( hasCached ) {
hasCached = false;
return cached;
}
//iterate until next matches
}
关于java - 如何实现此FilteringIterator?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5474893/