为什么迭代器被赋予我的构造函数,是不是将iterator.next()添加到我的列表中?

时间:2017-07-13 11:46:44

标签: java iterator

我正在实现一个新的迭代器。这个新迭代器的构造函数得到一个迭代器,我的想法是我想添加迭代器所连接的迭代对象的所有条目,但迭代器不会添加条目应该如何。 这是我的代码:

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,但是它没有做到。 谢谢你的帮助。

1 个答案:

答案 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());
        }
    }

    ...
}