Scala中toSet的返回类型是什么

0 collections scala set hashset scala-collections

假设我有一个斯卡拉阵列arrInt。考虑arr.toSet。我知道toSet返回一个Set对象。这SetHashSet,还是TreeSet默认?

Mar*_*lic 5

返回值的编译时类型toSetSet

def toSet[B >: A]: immutable.Set[B]
Run Code Online (Sandbox Code Playgroud)

但是返回的对象的运行时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
...
Run Code Online (Sandbox Code Playgroud)

哪个输出