【发布时间】:2017-11-10 05:02:08
【问题描述】:
我有两个对象,它们都有 4 个需要比较的相似字段,我从不同的来源获取它们作为对象列表。我想确保两个列表中至少有一个匹配的对象,因为它们具有完全相同的字段。问题是它们可以按不同的顺序排列。我有这段代码,其中有两个 for 循环
for(Object1 object1 : list1){
bool match = false;
for(Object2 object2 : list2){
if(object1.getField1().equal(object2.getField1()) && etc etc..){
match = true;
break;
}
}
if(!match)
return false
}
return true;
基本上,我遍历所有 list2 以查看是否有至少一个匹配行包含 object1 中的所有相同字段,如果没有,则返回 false,如果有匹配行,则继续下一行,直到我检查了 list1 中的所有行。
我不喜欢这种检查方式,我想知道是否有更简单的检查方式。我听说过在 java 8 中使用 Stream,但我想不出在这种情况下使用的方法。任何帮助将不胜感激,谢谢。
【问题讨论】:
-
您是否编写了定义每个列表中的对象的类?
-
@BillHorvath,我很困惑,你的意思是像其中一个对象的 toString 吗?还是一个类来获取列表中的每个对象?
-
抱歉,如果不清楚。列表中的每个对象都是具有四个字段的类的实例。你写的课吗?还是来自 java.util、org.springframework 等库?