> IObjectTest是一个接口
单一布尔测试(Object o)方法
> FilteringIterator是Iterator的一个实现
用另一个迭代器初始化
和一个IObjectTest实例:new
FilteringIterator(myIterator,
MYTEST).你的FilteringIterator会
然后允许迭代
‘myIterator’,但跳过任何
不通过的物体
‘myTest’测试.
单一布尔测试(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 }
原文地址:https://www.jb51.cc/java/123987.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。