小编典典

什么时候应该在 Scala 中选择 Vector?

all

看来VectorScala 收藏派对已经晚了,所有有影响力的博文都已经离开了。

在 JavaArrayList中是默认集合——我可能会使用LinkedList,但前提是我已经考虑过算法并足够注意进行优化。在 Scala
中,我应该将其Vector用作默认值Seq,还是尝试确定何时List更合适?


阅读 61

收藏
2022-06-23

共1个答案

小编典典

作为一般规则,默认使用Vector. 它比
几乎List所有东西都快,并且对于比普通大小的序列更节省内存。请参阅此文档,了解 Vector
与其他集合相比的相对性能。有一些缺点。具体来说: __Vector

  • 头部的更新比你想象的要慢List(虽然没有你想象的那么快)

ListScala 2.10 之前的另一个缺点是模式匹配支持+::+.

还有一种更抽象的代数方式来解决这个问题:你在 概念上 拥有什么样的序列?另外,你在 概念上 用它做什么?如果我看到一个返回
的函数Option[A],我知道该函数在其域中有一些漏洞(因此是部分漏洞)。我们可以将相同的逻辑应用于集合。

如果我有一个 type
序列List[A],我实际上是在断言两件事。首先,我的算法(和数据)完全是堆栈结构的。其次,我断言我对这个集合要做的唯一事情是完整的 O(n)
遍历。这两个真的是齐头并进。相反,如果我有一些 type Vector[A],我 唯一
要断言的是我的数据具有明确定义的顺序和有限长度。因此,断言较弱Vector,这导致其更大的灵活性。

2022-06-23