关于迭代器的两个问题
问题1)为什么迭代器以不能重用的方式实现?它实现了内存优化吗?
scala> while (it.hasNext) println(it.next)
1
2
3
4
5
scala> while (it.hasNext) println(it.next)
scala>
问题2)如何实现迭代器来实现此行为?是iterator
只指向集合中的一个元素,如果有下一个元素,那么迭代器的先前值是否被覆盖?类似于LinkedList的东西,其逻辑类似于if (node->next != null) node = node->next
答案 0 :(得分:3)
注意到方法hasNext()
?该方法告诉您什么时候"所有内容都被迭代"。在你告诉你之后,为什么你希望这个方法再次返回true:"你看到了所有元素"之前?迭代器应该如何知道"您决定再次访问所有(或某些?)条目?!
(大多数)迭代器实现的重点是:你用它来“迭代”#34;按某种顺序处理某事。
整个概念着重于“按特定顺序迭代”#34;因此,您重新使用相同的迭代器的想法是不适合"适合"迭代器的基本思想。
当然,你可以创建自己的迭代器实现,允许"重置"迭代器。但正如所说:那将是你需要自己实现的东西。