gpt4 book ai didi

scala - 如何克隆迭代器?

转载 作者:行者123 更新时间:2023-12-03 13:55:25 25 4
gpt4 key购买 nike

假设我有一个迭代器:

val it = List("a","b","c").iterator


我想要它的副本;我的代码是:

val it2 = it.toList.iterator


是正确的,但似乎不好。还有其他API可以做到吗?

最佳答案

警告:至少从Scala 2.9.0开始,这将使原始迭代器为空。您可以val ls = it.toList; val it1 = ls.iterator; val it2 = ls.iterator获得两份。或使用重复(也适用于非列表)。

Rex的答案是本书,但实际上,对于scala.collection.immutable.List而言,您的原始解决方案是迄今为止最有效的解决方案。

可以使用该机制复制列表迭代器,而基本上没有开销。这可以通过快速查看scala.collection.immutable.LinearSeq,esp中iterator()的实现来确认。 toList方法的定义,它仅返回后备Seq的_.toList,如果它是一个List(在您的情况下为List),它就是标识。

在调查您的问题之前,我并不了解List迭代器的此属性,并且我非常感谢您提供的信息……尤其是,这意味着可以使用Iterators在Scala不可变列表上有效实现许多“列表烦人”算法作为鹅卵石。

关于scala - 如何克隆迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com