【发布时间】:2019-01-06 06:09:49
【问题描述】:
我在调试迭代器时注意到一个奇怪的行为;迭代器跳过了一些元素。过了一会儿,我意识到调试手表正在改变我的运行时变量值。
然后我得到了
Caused by: java.util.NoSuchElementException: null
at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:721) ~[na:1.8.0_181]
at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:742) ~[na:1.8.0_181]
【问题讨论】:
-
我看到你打电话给
planetsIterator.next()来获得pivot和second而不检查hasNext()。此代码不是 MCVE,但我会检查您总是在next()之前调用hasNext() -
您认为调试手表在做什么?它执行表达式,以便向您显示结果。如果表达式是
next()调用,则它调用next()。这有什么惊人的? --- 为具有副作用的表达式创建监视是一个坏主意。不要这样做。 -
@cepix 您能否提供一个完整的工作示例(github 链接可以)。
标签: java debugging intellij-idea iterator