假设我有一个Person
具有简单属性的类,如姓名、年龄、地址、电话和电子邮件。
我有一堆Sets
每个包含的Person
对象。
我想Set
为每个集合动态定义特定的相等性,以便优雅地删除重复项。
例如:我想要一组删除基于电话的重复人员,另一组使用电子邮件删除重复的人员对象。
我知道的唯一方法是Person
多次子类并根据我的要求覆盖 equals ,但这会导致类数量的爆炸式增长。
在 的情况下允许这样做Comparators
。我可以根据需要/想要为同一个对象定义尽可能多的匿名比较器。
具体来说,我想了解为什么Java
我们只能为一个对象定义一个相等性但可以定义多个比较器?
在这种情况下,最好的方法是什么?