someCollection.to[Seq]
和someCollection.toSeq
之间有什么区别?我注意到的一件事是,在Map
上调用时,.toSeq
通常会返回Vector
,而.to[Seq]
通常会返回ArrayBuffer
,但我不是确定它的真正含义。
答案 0 :(得分:6)
Scala集合的to[T]
方法是更通用的函数。它需要一个隐式参数作为CanBuildFrom[From, Elem, To]
类型的值,它定义了如何使用To
中包含Elem
类型元素的集合From
。通常,toSeq
,toList
,toMap
,...直接转发到此方法,例如Set
就是这种情况。
但是,某些类为某些toXXX
方法提供了特殊的实现,以便提高效率。内部调用toSeq
的{{1}}类的Map
实现就是这种情况。 toBuffer
会返回toBuffer
。与此相反,将使用ArrayBuffer
隐式值调用更通用的to[Seq]
方法,该隐式值返回不可变的CanBuildFrom
集合。