我正在实现一个新的迭代器。这个新迭代器的构造函数得到一个迭代器,我的想法是我想添加迭代器所连接的迭代对象的所有条目,但迭代器不会添加条目应该如何。 这是我的代码:
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,但是它没有做到。 谢谢你的帮助。
答案 0 :(得分:4)
你的buffList
是构造函数的局部变量,这意味着一旦构造函数的执行完成它就会消失(或者更准确地说,它将有资格进行垃圾收集,你就会#39} ; ll无法访问它。)
将元素存储在实例变量中:
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());
}
}
...
}