Scala列表连接比较

时间:2017-01-02 17:57:28

标签: scala

scala中列表连接有两种方法:"Cannot read property 'validationViolations' of undefined" :::。 例如,有3个列表 - x,y,z。我听说++x ::: y ::: z快,因为x ++ y ++ z是正确关联的。 :::被解析为x ::: y ::: z。 我的问题是下一个:

  1. 这个词是真的吗?
  2. x ::: (y ::: z):::的时间复杂度。

1 个答案:

答案 0 :(得分:1)

  

术语是否真实

不,两个都花费O(n)时间来连接列表。 y是正确关联的,首先是zx,然后是x ::: (y ::: z))++,其中x将首先结束yz,然后(x ++ y) ++ z++)。

  

:::和++。

的时间复杂度是多少

为O(n)。具体来说,List[A]上的:::已优化为在内部使用override def ++[B >: A, That](that: GenTraversableOnce[B]) (implicit bf: CanBuildFrom[List[A], B, That]): That = if (bf eq List.ReusableCBF) (this ::: that.seq.toList).asInstanceOf[That] else super.++(that) ,如果我们重新连接两个列表:

=