繁体   English   中英

Scala中toSet的返回类型是什么

[英]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 a HashSet还是默认的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 个元素EmptySetSet1 、 ...、 Set4 (如元组),然后是HashSet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM