scala中列表连接有两种方法:"Cannot read property 'validationViolations' of undefined"
和:::
。
例如,有3个列表 - x,y,z。我听说++
比x ::: y ::: z
快,因为x ++ y ++ z
是正确关联的。 :::
被解析为x ::: y ::: z
。
我的问题是下一个:
x ::: (y ::: z)
和:::
的时间复杂度。答案 0 :(得分:1)
术语是否真实
不,两个都花费O(n)时间来连接列表。 y
是正确关联的,首先是z
和x
,然后是x ::: (y ::: z))
(++
,其中x
将首先结束y
和z
,然后(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)
,如果我们重新连接两个列表:
=