在2套中匹配不同的对象

时间:2015-02-26 10:40:40

标签: java set matching

我需要一个匹配2组对象A和B的模式。这两个对象的类型不同。

当3个成员匹配时,匹配2个对象。 2个匹配的对象可以包含不同的成员。

处理如下:

在A中找到B中的匹配对象。 检查matcing对象中成员变量X的值。 如果X不同,请将匹配的对象添加到“修改过的”对象中。设置和 将A中匹配的对象替换为B中匹配的对象。

A和B中的对象数量应相等。如果没有,我应该结束处理。基本上,B是A的潜在更新。如果有更新,我需要一个新的A(新A)和B中与A(修改)不同的对象列表。

我尝试使用CollectionUtils.select循环遍历两个列表并进行匹配,但我想知道是否有更清晰的解决方案。

E.g。 (为简洁起见,如果Ref相同,则2个对象匹配)

A

Ref     x
abc1    100
abc2    200
abc3    300
abc4    400

B

Ref     x
abc1    700
abc2    200
abc3    600
abc4    400
abc5    500

Result:

Modified
abc1    700
abc3    600

New A
abc1    700
abc2    200
abc3    600
abc4    400

1 个答案:

答案 0 :(得分:0)

如何创建一个方法,将两个对象作为参数(1个类型a,其他类型b)并返回一个布尔值(匹配与否) 基于您的示例类(成员是ref和x,但只有ref是相同的匹配) 示例:

 boolean match (A a , B b){
  return (ref.equals(b.ref));
}

您可以遍历列表并比较As和Bs,每当方法返回true时,在修改后添加B,每当返回false时添加新的A. 希望它有所帮助