Java迭代器值维持
我有一个非常基本的java迭代器场景……在这个场景中,我面临着以下关于找到迭代器工作的问题 迭代器逻辑迭代器在两个while循环中的值是否相同,或者它在第二个while循环中结束并变为nullJava迭代器值维持,java,collections,iterator,set,Java,Collections,Iterator,Set,我有一个非常基本的java迭代器场景……在这个场景中,我面临着以下关于找到迭代器工作的问题 迭代器逻辑迭代器在两个while循环中的值是否相同,或者它在第二个while循环中结束并变为null Set logSet=transactionLogMap.entrySet(); Iterator logIterator=logSet.iterator(); BigDecimal tempRegId=null; while (logIterator.hasNext()) { tempRegI
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());
}
}
它将在第二个循环之前结束,但不会变为null
对于
logIterator.hasNext()
,它只会返回false
,这些将是不同的值。第二个循环返回false
允许调用方在迭代期间使用定义良好的语义从基础集合中删除元素
您只是在重用旧的迭代器。一旦
hasNext()
返回true
,他将继续这样做。你不会进入第二个循环
除此之外,学习使用新的进行构造
for(BigDecimal tempRegId : transactionLogMap.entrySet() {
}
为什么不自己测试一下并查看?for(条目tempRegId:transactionLogMap.entrySet()){