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

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

    ...
}

10-02 10:09