【问题标题】:What are the differences between LazyList and List in Scala?Scala中的LazyList和List有什么区别?
【发布时间】:2020-07-20 02:24:42
【问题描述】:

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

【问题讨论】:

    标签: scala scala-collections


    【解决方案1】:

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

    • 它的类型是不可变的,它被放入scala.collection.immutable 包中。常见的List 类型之间的主要区别在于LazyList 的元素是延迟计算的,因此只计算那些被请求的元素。通过这种方式,惰性列表可以包含无限数量的元素。
    • 就性能而言,这两种类型(LazyListList)具有可比性。
    • LazyList 由一个运算符构成,该运算符与 List 类型 (::)、#:: 所特有的运算符具有相似的外观。
    • 因为懒惰,LazyList 无法在递归循环中生成 StackOverFlowError,而旧的 List 可以这样做。

    【讨论】:

      【解决方案2】:

      问题

      LazyListList 有什么区别?

      可以改写为问题

      StreamList 有什么区别?

      因为Scala 2.13 发行说明

      immutable.LazyList 替换 immutable.StreamStream有 不同的懒惰行为,现在已弃用。 (#7558, #7000)

      what is the difference between Scala Stream vs Scala List vs Scala Sequence 提供了改写后问题的答案。

      在特定情况下,measurements 最好解决性能判断。

      【讨论】:

        猜你喜欢
        • 2020-05-24
        • 2020-04-22
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多