gpt4 book ai didi

java - 为什么给定我的构造函数的迭代器没有将 iterator.next() 添加到我的列表中?

转载 作者:行者123 更新时间:2023-11-30 06:47:58 24 4
gpt4 key购买 nike

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

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,但 more 没有。感谢您的帮助。

最佳答案

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

...
}

关于java - 为什么给定我的构造函数的迭代器没有将 iterator.next() 添加到我的列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com