Scala 中的 LazyList 和 List 有什么区别?

What are the differences between LazyList and List in Scala?

Scala 中的以下集合类型有何区别:ListLazyList 类型?

LazyListScala 标准库 2.13.1 中引入的新类型。

  • 类型是不可变的,它被放入 scala.collection.immutable 包中。普通 List 类型之间的主要区别在于 LazyList 的元素是延迟计算的,因此只计算那些被请求的元素。通过这种方式,惰性列表可以拥有无​​限数量的元素。
  • 在性能方面,两种类型(LazyListList)不相上下。
  • A LazyList 是用一个与 List 类型 (::)、#::.[=32 的特定运算符相似的运算符构造的=]
  • 由于懒惰,LazyList 不能像旧的 List 那样在递归循环中生成 WhosebugError

问题

What are the differences between LazyList and List?

可以改写为问题

What are the differences between Stream and List?

因为 Scala 2.13 发行说明

immutable.LazyList replaces immutable.Stream. Stream had different laziness behavior and is now deprecated. (#7558, #7000)

改写问题的答案由 提供。

性能判断最好由 measurements 在特定场景中解决。