java匿名迭代器?

ndasle7k  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(400)

我有以下java代码:

while (pOn[j].iterator().hasNext()) {
  stats.decrement(getNodeCase((int) (pOn[j].iterator().next()), hidden, o));
}

目前,它还没有终止。我怀疑这是因为pon[j].iterator()每次都返回一个新的迭代器。有没有一种方法可以解决这个问题,而不必将迭代器赋给临时变量?谢谢。
编辑:我不小心包括了这一行,不应该在那里。 pOn[j].iterator().next(); . 从那以后我就把它拿走了。

t5fffqht

t5fffqht1#

你从你的问题中得出了错误的结论。你说你有8个相似的块,因此你不想使用局部变量。
尽管这已经导致您编写不正确的错误代码。
你看-问题不是迭代器的附加变量。事实上你已经有8个街区了。
所以这里的答案是:退一步,确定代码中的公共部分,并创建有用的抽象(可能是一些小的helper方法),以消除来自这8个块的代码重复。你看,当你找到一种在助手方法中隐藏循环的方法时,你真的会关心迭代器使用的变量吗?

pwuypxnk

pwuypxnk2#

.iterator() 正在从第一个元素返回新的迭代器。将迭代器放入变量中。

Iterator itr = pOn[j].iterator();
while (itr.hasNext()) {
  stats.decrement(getNodeCase((int) (pOn[j].iterator().next()), hidden, o));
  itr.next();
}

相关问题