Java:如何使用不同的equals定义执行列表操作?
我有两个通用POJO列表。我需要根据比较列表中POJO的不同方法对列表执行一些设置操作。
例如,如果我的POJO具有以下结构:
public class GenericPojo {
private String id;
private String address;
private String city;
private String country;
private String extraDetails;
}
(带有适当的getter和setter)
给定
List1<GenericPojo>
和List2<GenericPojo>
,我将如何找到:List1-List2(如果ID相等,则
GenericPojo
类相等)List1和List2的相交(其中
id
,address
,city
,country
,但extraDetails
的GenericPojo
不相等)两个不同的自定义比较器类在这里有用吗?是否有任何可以有效处理这些操作的库,还是应该尝试实现自己的库?
最佳答案
如果您必须在无法控制的情况下操纵类,我建议您使用委托(delegate)。这是我的尝试:
RichList<T>
契约(Contract)的List
周围创建List
包装器。 EqualityChecker<T>
接口(interface)。 EqualityChecker<T>
具体实例,它将为您执行相等性测试。 因此,对于您为其编写了
List
的任何类型的对象,您都可以将这两种操作都添加到所有现有的EqualityChecker
中。进一步的改进:您还可以编写一个默认的
EqualityChecker<T>
,它仅调用比较对象的equals方法。然后,您可以将这两个新操作重载为默认的EqualityChecker
。