誰かが次のことを理解するのを手伝ってくれますか? 要素のツリーマップを作成すると、scala は、compare メソッドも要素の等価性を決定すると判断したように見えるため、「compare」メソッドに従って同じ要素を削除します。オーバーライドしていない場合、オブジェクトの等価性に従って等価性を定義する必要があるため、これは期待していませんか?
import scala.collection.mutable._
class A(val num: Int) extends Ordered[A] {
    def compare (that: A) = {
        this.num - that.num
    }
    override def toString() = {
      num+""
    }
}
object A {
    def main(args: Array[String]) = {
        val mySet = new TreeSet[A]()
        mySet += new A(3)
        mySet += new A(2)
        mySet += new A(1)
        mySet += new A(3)
        mySet += new A(2)
        mySet += new A(1)
        mySet.foreach(println)
    }
}
与える
1
2
3
期待されていない(私が)
1
1
2
2
3
3