我可以在Scala中创建一个使用不同的equals / hashCode / compare实现的集合吗?

Wil*_*urn 5 scala scala-collections

我正在寻找创建身份集的简单方法。我只希望能够跟踪遍历图形时是否“看到”了特定对象。

我不能使用常规Set,因为Set使用“ ==”(Scala中的equals方法)来比较元素。我想要的是一个使用“ eq”的集合。

有什么方法可以在Scala中创建一个Set,该Set使用一些应用程序指定的方法测试相等性,而不是在set元素上调用equals?我在寻找可以覆盖但找不到的“ wrapEquals”方法。

我知道我可以使用Java的IdentityHashMap,但是我正在寻找更通用的东西。

我的另一个想法是将每个set元素包装到另一个根据eq实现equals的对象中,但是生成大量新对象只是为了获得一个新的equals实现是浪费的。

谢谢!

Ben*_*ngs 1

是一个类似的问题。在这种情况下,接受的答案是使用 aTreeSet并提供一个 custom Comparator