Scala设置元素唯一性:用于比较用户定义的类的实现方法是什么?

时间:2015-06-11 16:40:11

标签: scala set compare unique

我试图在Scala documentation中找到此信息,但看起来它不存在。

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

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

例如,在SortedSet的情况下,有一个隐式Ordering[A]来确保订单。在Set

的情况下是否有任何类似的内容?

1 个答案:

答案 0 :(得分:4)

scala和java都要求您以一致的方式实现equals和hashCode。如果它在某些情况下仅使用一个,那就巧合了。你必须同时拥有这两个,以便你的班级为X,每个X,x1.equals(x2) == (x1.hashCode() == x2.hashCode())

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