Мне нужно получить разницу между двумя наборами / списками, но объекты в этих наборах строятся по-разному. Я хотел бы, чтобы разность наборов была рассчитана только для одного поля этих объектов, как я могу это сделать?
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()
по умолчанию, но я не думаю, что он вызывается.