我试图在 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 方法。