java – 如何实现这个FilteringIterator?

> IObjectTest是一个接口
单一布尔测试(Object o)方法
> FilteringIterator是Iterator的一个实现
用另一个迭代器初始化
一个IObjectTest实例:new
FilteringIterator(myIterator,
MYTEST).你的FilteringIterator会
然后允许迭代
‘myIterator’,但跳过任何
不通过的物体
‘myTest’测试.

由于“hasNext”操作实际上涉及重复移动底层迭代器
直到达到下一个匹配的项目.问题是如何将它迭代回来,因为hasNext不应该移动底层的迭代器.

解决方法

你需要使你的迭代器有状态.缓存从hasNext检索的最后一个值,并使用下一个方法(如果存在).
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
}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...