【发布时间】:2020-01-23 20:05:48
【问题描述】:
我需要获得两个集合/列表之间的集合差异,但这些集合中的对象构造不同。我想只在这些对象的一个字段上计算集合差异,我该怎么做?
POJO o1 = new POJO();
o1.setName("Bean");
o1.setLocation("Boston");
POJO o2 = new POJO();
o2.setName("Bagel");
o2.setLocation("NYC");
POJO o3 = new POJO();
o3.setName("Bean");
List<POJO> p1 = new ArrayList<>();
p1.add(o1);
p1.add(o2);
List<POJO> p2 = new ArrayList<>();
p2.add(o3);
Collection<POJO> subList = CollectionUtils.subtract(p1, p2);
System.out.println("subList: "+subList.toString());
我看到的输出是:subList: [POJO(name=Bean)],即o3。但是对于我的用例,o1 和 o3 是相同的 - 我该如何实现呢?我也覆盖了默认的equals() 方法,但我认为它没有被调用。
【问题讨论】:
-
我不得不搜索一下
CollectonUtils的来源。它似乎来自Apache。重载版本将谓词作为第三个参数来确定要减去的值。请更新您的标签以包含适当的第三方 API 参考。
标签: java collections set