加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何实现这个FilteringIterator?

发布时间:2020-12-14 17:46:47 所属栏目:Java 来源:网络整理
导读:IObjectTest是一个接口 单一布尔测试(Object o)方法 FilteringIterator是Iterator的一个实现 用另一个迭代器初始化 和一个IObjectTest实例:new FilteringIterator(myIterator, MYTEST).你的FilteringIterator会 然后允许迭代 ‘myIterator’,但跳过任何 不
> 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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读