Java比较两个列表的对象值?
我有两个列表*ListA<MyData> listA = new ArrayList<MyData>()
, ListB<MyData>
listB = new ArrayList<MyData>()都包含 MyData 类型的对象,而 MyData* 包含这些变量。
MyData { String name;
boolean check;
}
利斯塔和数组listB都包含MyData的对象,现在我要两个列表的对象值比较这里 ,以及 变量一样,如果
包含这些对象值
ListA = ["Ram",true],["Hariom",true],["Shiv",true];
和ListB也包含
ListB = ["Ram",true],["Hariom",true],["Shiv",true];
然后我必须比较列表并返回false,因为两个列表相同但是如果ListA包含
ListA = ["Ram",true],["Hariom",true],["Shiv",false];
和 包含
ListB = ["Ram",true],["Hariom",true],["Shiv",true];
然后我必须比较列表并返回true,因为两个列表都不相同
反之亦然,因此任何列表值的任何细微变化都必须返回true。
回答:
我有上述问题的解决方案
public boolean compareLists(List<MyData> prevList, List<MyData> modelList) { if (prevList.size() == modelList.size()) {
for (MyData modelListdata : modelList) {
for (MyData prevListdata : prevList) {
if (prevListdata.getName().equals(modelListdata.getName())
&& prevListdata.isCheck() != modelListdata.isCheck()) {
return true;
}
}
}
}
else{
return true;
}
return false;
}
我们该如何覆盖…想象一下,如果您有两个数组“ A”,真“ B”,真“ C”,真和“ A”,真“ B”,真“
D”,真。即使数组一具有C且数组二具有D,也没有任何检查可以捕获到该错误( 由@Patashu提及 )。.SO为此我做了以下更改。
public boolean compareLists(List<MyData> prevList, List<MyData> modelList) { if (prevList!= null && modelList!=null && prevList.size() == modelList.size()) {
boolean indicator = false;
for (MyData modelListdata : modelList) {
for (MyData prevListdata : prevList) {
if (prevListdata.getName().equals(modelListdata.getName())
&& prevListdata.isCheck() != modelListdata.isCheck()) {
return true;
}
if (modelListdata.getName().equals(prevListdata.getName())) {
indicator = false;
break;
} else
indicator = true;
}
}
}
if (indicator)
return true;
}
}
else{
return true;
}
return false;
}
以上是 Java比较两个列表的对象值? 的全部内容, 来源链接: utcz.com/qa/410740.html