Scala 集合元素的唯一性:比较用户定义的 类 要实现什么?

Scala set element uniqueness: What to implement for comparison of user defined classes?

我正试图在 Scala documentation 中找到此信息,但它似乎不存在。

在 Java 的情况下,这取决于所使用的 Set 实现,AFAIK。在某些情况下,实现的方法是 equals,在 HashSet 的情况下,比较是使用散列方法完成的。

scala.collections.mutable.Set 的实际实现细节似乎未指定,因为实现可能会有所不同(这很好,我喜欢我的代码是通用的),但我想知道如何确保完成特定比较有这样一个通用的集合。

比如在SortedSet的情况下,有一个隐含的Ordering[A]来保证顺序。在Set的情况下是否有任何类似的东西?

scala 和 java 都要求您以一致的方式实现 equals 和 hashCode。如果它在某些情况下只与一个一起工作,那是巧合。你必须同时拥有两者,这样你的 class 就是 X,对于每个 X,x1.equals(x2) == (x1.hashCode() == x2.hashCode()).

Scala 案例 classes 具有编译器为您实现的 equals 和 hashCode 方法。