Scala的toList函数似乎很慢

Cor*_*let 0 scala

我的印象是在一个不可变的Seq上调用seq.toList()会产生一个新的列表,它从第一个列表中共享结构状态.我们发现这可能非常慢,我不知道为什么.这刚刚分享的结构状态,是否正确?我不明白为什么当它知道它们永远不会改变时,它会为所有元素制作n次副本.

Rex*_*err 6

ListScala中的A 是一种特殊的数据结构:::每个实例包含一个值,后面跟着Nil链的末尾.

如果你toListList,那需要O(1)时间.如果您toList处理其他任何内容,则必须将其转换为a List,其中涉及O(n)对象分配(所有::实例).

所以你必须问你是否真的想要一个scala.collection.immutable.List.这就是toList给你的东西.