在Scala中,LazyList和List之间有什么区别?

26 浏览
0 Comments

在Scala中,LazyList和List之间有什么区别?

ListLazyListScala 中以下集合类型的区别是什么?

0
0 Comments

问题的出现的原因:在Scala 2.13版本的发布说明中提到,不可变的`immutable.Stream`被替换成了`immutable.LazyList`,因为`Stream`具有不同的延迟行为,并且已经被废弃。因此,有人提出了`LazyList`和`List`之间的区别是什么。

问题的解决方法:对于重新提出的问题,可以在what is the difference between Scala Stream vs Scala List vs Scala Sequence中找到答案。在特定的场景中,性能评判最好通过measurements来进行。

下面是这篇文章的整理:

问题:`LazyList`和`List`之间的区别是什么?

问题可以重新表述为:`Stream`和`List`之间的区别是什么?这是因为在Scala 2.13版本的发布说明中提到,不可变的`immutable.Stream`被替换成了`immutable.LazyList`,因为`Stream`具有不同的延迟行为,并且已经被废弃。

对于重新提出的问题,可以在what is the difference between Scala Stream vs Scala List vs Scala Sequence中找到答案。

性能评判最好通过measurements来进行。

0
0 Comments

在Scala标准库2.13.1中引入了一种新的类型LazyList

  • 这个类型是不可变的,放置在scala.collection.immutable包中。与普通List类型的主要区别是LazyList的元素是惰性计算的,因此只有在请求时才计算这些元素。这意味着,一个惰性列表可以有无限多个元素。
  • 在性能上,LazyListList这两种类型是可比较的。
  • LazyList的构造方式与List类型相似,使用一个类似于::的运算符,#::
  • 由于是惰性的,LazyList在递归循环中不会产生StackOverFlowError,而旧的List可能会产生。
0