我正在实现一个新的迭代器。这个新迭代器的构造函数得到一个迭代器,我的想法是,我想添加该迭代器所连接的所有可迭代对象的条目,但该迭代器不会按原样添加条目。
这是我的代码:
public PredicateIterator(Iterator<T> iter, Predicate<T> pred, T argument){
List<T> buffList = new LinkedList<>();
while(iter.hasNext()){
buffList.add(iter.next());
}
}
当我调试它时,它告诉我bufflist的大小为0,而iter.next()为Test1,但更多情况下它不起作用。
谢谢你的帮助。
最佳答案
您的buffList
是构造函数的局部变量,这意味着一旦完成构造函数的执行,它就会消失(或更确切地说,它将成为有资格进行垃圾回收的对象,您将无权对其进行访问) )。
将元素存储在实例变量中:
class PredicateIterator {
private List<T> buffList;
...
public PredicateIterator(Iterator<T> iter, Predicate<T> pred, T argument){
this.buffList = new LinkedList<>();
while(iter.hasNext()){
buffList.add(iter.next());
}
}
...
}