[英]What is the return type of toSet in Scala
假设我有一个Int
的 Scala 数组arr
。 考虑arr.toSet
。 我知道toSet
返回一个Set
object。 这是Set
a HashSet
还是默认的TreeSet
?
toSet
返回的值的编译时类型是Set
def toSet[B >: A]: immutable.Set[B]
但是toSet返回的toSet
可能会有所不同,我们可以使用 Scala REPL 检查
Array(1).toSet.getClass // class immutable.Set$Set1
Array(1, 2).toSet.getClass // class immutable.Set$Set2
Array(1, 2, 3).toSet.getClass // class immutable.Set$Set3
Array(1, 2, 3, 4).toSet.getClass // class immutable.Set$Set4
Array(1, 2, 3, 4, 5).toSet.getClass // class immutable.HashSet
Array(1, 2, 3, 4, 5, 6).toSet.getClass // class immutable.HashSet
...
哪个输出
假设我有一个
Int
的 Scala 数组arr
。 考虑arr.toSet
。 我知道toSet
返回一个Set
object。 这是Set
aHashSet
还是默认的TreeSet
?
两者都不。 它是一个scala.collection.immutable.Set
。
这是scala.Array.toSet
的文档(实际上是scala.collection.IterableOnceOps.toSet
):
def toSet[B >: A]: Set[B]
如您所见,它明确指定返回类型为Set
。
https://github.com/scala/scala/blob/2.13.x/src/library/scala/collection/immutable/Set.scala
最多 4 个元素EmptySet
、 Set1
、 ...、 Set4
(如元组),然后是HashSet
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.