加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java:如何使用不同的equals定义执行列表操作?

发布时间:2020-12-15 03:08:11 所属栏目:Java 来源:网络整理
导读:Java:如何使用不同的equals定义执行列表操作? 我有两个通用POJO列表.我需要根据比较列表中POJO的不同方法在列表上执行一些设置操作. 例如,如果我的POJO具有以下结构: public class GenericPojo { private String id; private String address; private Str
Java:如何使用不同的equals定义执行列表操作?

我有两个通用POJO列表.我需要根据比较列表中POJO的不同方法在列表上执行一些设置操作.

例如,如果我的POJO具有以下结构:

public class GenericPojo {
    private String id;
    private String address;
    private String city;
    private String country;
    private String extraDetails;
}

(与适当的吸气剂和制定者)

给定List1< GenericPojo>和List2< GenericPojo>,我怎么找到:

List1 – List2(如果只是ID相等,GenericPojo类相等)

List1和List2的相交(其中id,地址,城市,国家,但不是GenericPojo的extraDetails相等)

两个不同的自定义比较器类在这里有用吗?是否有任何库可以有效地处理这些操作,或者我应该尝试实现自己的操作?

解决方法

如果你必须操纵你的控制,我会建议使用委托.这是我的尝试:

>创建RichList< T>封面实现List合同的列表,基于decorator pattern.
>创建EqualityChecker< T> inteface,使用单个方法`public boolean equal(T t1,T,t2).
>为您的通用pojo实现此接口两次:一次检查ID,另一次检查其他字段.
>添加您感兴趣的两种方法(设置减法和设置交集),但使用补充参数,即EqualityChecker< T>将为您进行相等测试的具体实例.

因此,对于已编写EqualityChecker的任何类型的对象,您可以将这两个操作添加到所有现有列表中.

进一步改进:您还可以编写默认的EqualityChecker< T>它只调用比较对象的equals方法.然后,您可以重载两个新操作以默认EqualityChecker.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读