【发布时间】:2013-04-29 15:33:33
【问题描述】:
我有一个 Scala Iterator(我可以轻松地使用任何一种数据类型来实现我的目的),它是从 Seq 转换而来的。我想保留它直到我准备好它,但我也希望能够在 O(1) 中获得它的大小。我想知道是否有一种内置的设置方法可以让我保持可迭代对象的迭代器大小。
【问题讨论】:
-
为什么需要传递迭代器而不是原来的
Seq?顺便说一句,你写了 cast... 你不能从Seq转换为Iterator所以我假设你的意思是seq.iterator。在我看来,操作迭代器但需要知道大小是有风险的。只要有权访问迭代器的方法调用next(),这将改变迭代器的大小... -
如果您正在生成大量数据并打算将其放入
Array,我可以看到它很有用。通常的Iterator->Array路径必须使用可增长的数组,这在渐近上很好,但如果你有大量数据会产生大量垃圾,如果你事先知道大小,那就很不幸了。