看来VectorScala 收藏派对已经晚了,所有有影响力的博文都已经离开了。
Vector
在 JavaArrayList中是默认集合——我可能会使用LinkedList,但前提是我已经考虑过算法并足够注意进行优化。在 Scala 中,我应该将其Vector用作默认值Seq,还是尝试确定何时List更合适?
ArrayList
LinkedList
Seq
List
作为一般规则,默认使用Vector. 它比 几乎List所有东西都快,并且对于比普通大小的序列更节省内存。请参阅此文档,了解 Vector 与其他集合相比的相对性能。有一些缺点。具体来说: __Vector
ListScala 2.10 之前的另一个缺点是模式匹配支持+:对:+.
+:
:+
还有一种更抽象的代数方式来解决这个问题:你在 概念上 拥有什么样的序列?另外,你在 概念上 用它做什么?如果我看到一个返回 的函数Option[A],我知道该函数在其域中有一些漏洞(因此是部分漏洞)。我们可以将相同的逻辑应用于集合。
Option[A]
如果我有一个 type 序列List[A],我实际上是在断言两件事。首先,我的算法(和数据)完全是堆栈结构的。其次,我断言我对这个集合要做的唯一事情是完整的 O(n) 遍历。这两个真的是齐头并进。相反,如果我有一些 type Vector[A],我 唯一 要断言的是我的数据具有明确定义的顺序和有限长度。因此,断言较弱Vector,这导致其更大的灵活性。
List[A]
Vector[A]