【发布时间】:2016-07-01 01:32:07
【问题描述】:
使用内置方法将列表转换为迭代器时会出现问题。
- 调用
iterator.hasNext会改变iterator.size的值。 -
iterator.hasNext == false即使在非空迭代器上在任何迭代发生之前。
关于什么可能导致这些问题的任何想法?
val list = scala.collection.immutable.List(1, 2, 3)
val iterator = list.iterator
println(iterator.size) // 3
println(iterator.hasNext) // false
println(iterator.size) // 0
在 Scala 版本 2.11.4(OpenJDK 64 位服务器 VM,Java 1.8.0_72)上本地确认。
已在 IdeOne here 确认。
【问题讨论】:
-
来自 Iterator docs API:“特别重要的是要注意,除非另有说明,否则在调用迭代器方法后绝不应使用迭代器。”。这包括
size方法。
标签: scala