具有自定义相等标准的Java HashSet?

dev*_*ium 37 java set hashset

我一直在寻找到Java TreeSet中的接收在实例化时的自定义能力比较类似的东西,所以我需要不使用对象的默认平等(和散列码)的标准.

我能想到的最接近的是将我的对象包装在一个私有的自定义类中,但这看起来很糟糕:(这在编程时最终成为一种反复出现的主题,所以我想知道是否已有可供我们使用的东西.也许在公共图书馆?

谢谢

Lou*_*man 16

不,你已经找到了你应该使用的解决方案.

即使是TreeSet,它是令人难以接受的使用不兼容与比较标准equals:

请注意,如果有序集合要正确实现Set接口,则由有序集合维护的排序(无论是否提供显式比较器)必须与equals一致.

(我不知道Apache Commons,但是Guava 明确 拒绝了对此类事情的请求.)