0

我有一个非常基本的java迭代器场景......在寻找迭代器的工作时面临以下问题

迭代器 logIterator 在两个 while 循环中是否具有相同的值,或者它会在第二个 while 循环中结束并变为 null。

Set logSet=transactionLogMap.entrySet();
Iterator logIterator=logSet.iterator();
BigDecimal tempRegId=null;

while (logIterator.hasNext()) {
    tempRegId=(BigDecimal)logIterator.next();
}

if (someBoolean) {
     while (logIterator.hasNext()) {
         callsomeMethod(logIterator.next());
     }
}
4

3 回答 3

1

它将在第二个循环之前结束,但不会变为 null。

它只会false返回logIterator.hasNext()

于 2012-07-23T15:58:45.630 回答
1

这些将是不同的值。你的第二个循环返回false

迭代器允许调用者在迭代期间使用定义明确的语义从底层集合中删除元素

于 2012-07-23T15:59:00.260 回答
0

您只是在重用旧的迭代器。一旦它返回truehasNext()他将继续这样做。您不会进入第二个循环。

除此之外,学习使用新for结构

for(BigDecimal tempRegId : transactionLogMap.entrySet() {
}
于 2012-07-23T16:00:38.353 回答