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



我试图在 Scala 文档中找到这些信息,但看起来它不存在。

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

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

例如,在SortedSet的情况下,有一个隐式Ordering[A]来确保顺序。在Set的情况下有类似的东西吗?

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

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

最新更新