我有以下java代码:
while (pOn[j].iterator().hasNext()) {
stats.decrement(getNodeCase((int) (pOn[j].iterator().next()), hidden, o));
}
目前,它还没有终止。我怀疑这是因为pon[j].iterator()每次都返回一个新的迭代器。有没有一种方法可以解决这个问题,而不必将迭代器赋给临时变量?谢谢。
编辑:我不小心包括了这一行,不应该在那里。 pOn[j].iterator().next();
. 从那以后我就把它拿走了。
2条答案
按热度按时间t5fffqht1#
你从你的问题中得出了错误的结论。你说你有8个相似的块,因此你不想使用局部变量。
尽管这已经导致您编写不正确的错误代码。
你看-问题不是迭代器的附加变量。事实上你已经有8个街区了。
所以这里的答案是:退一步,确定代码中的公共部分,并创建有用的抽象(可能是一些小的helper方法),以消除来自这8个块的代码重复。你看,当你找到一种在助手方法中隐藏循环的方法时,你真的会关心迭代器使用的变量吗?
pwuypxnk2#
.iterator()
正在从第一个元素返回新的迭代器。将迭代器放入变量中。