Scala 为什么这种排序会过滤掉集合中的元素?

Scala 为什么这种排序会过滤掉集合中的元素?,scala,Scala,代码如下: object Test { import collection.mutable.TreeSet val myOrdering = Ordering.fromLessThan[Int](_ > _) val set1 = TreeSet(3, 2, 1, 5)(myOrdering) // 5, 3, 2, 1 val myOrdering2 = Ordering.fromLessThan[Int](_ % 3 > _ % 3) val set2 = T

代码如下:

object Test {
  import collection.mutable.TreeSet
  val myOrdering = Ordering.fromLessThan[Int](_ > _)
  val set1 = TreeSet(3, 2, 1, 5)(myOrdering) // 5, 3, 2, 1
  val myOrdering2 = Ordering.fromLessThan[Int](_ % 3 > _ % 3)
  val set2 = TreeSet(7, 4, 2, 3, 1, 5)(myOrdering2) // TreeSet(5, 1, 3)
}

直观地说,人们会期望
set2
类似于
TreeSet(5,2,7,4,1,3)
,但Scala会过滤掉“重复项”,因为
5%3==2%3
等等。这是一个bug吗?

不,
TreeSet
也使用
排序
来评估相等性
Ordering.equiv
是等价的,由
TreeSet
调用