TreeSet.apply
对象方法返回SortedSet
而不是返回是否有原因TreeSet
?
以下代码不会在 scala 2.7 中编译
val t:TreeSet[Int] = TreeSet(1,2,3)
字面上的答案是因为apply()
是根据 来实现 的++
,它在 中定义SortedSet
,因此返回 a SortedSet
。++
然后继续使用定义在 中的+
,因此如果它很TreeSet
关键,您可以将其转换回TreeSet
(尽管我不推荐它,因为它依赖于实现并且可能会随着时间而改变!)。
从 TreeSet 中你需要什么是从 SortedSet 中得不到的?
我不确定设计决策背后的基本原理是什么,尽管它看起来在 2.8 中发生了变化。
这已被确定为当前 scala 集合库的一个缺点,并在作为 scala 2.8 一部分的改进的集合库中得到解决。有关血腥细节,请参见http://www.scala-lang.org/sid/3#。