Java 比较两个列表的对象值? [英] Java Compare Two List's object values?
问题描述
我有两个列表 **ListA
** 和 ListB
都包含 MyData 类型的对象,MyData 包含这些变量.
I have two list **ListA<MyData> listA = new ArrayList<MyData>()
** and ListB<MyData> listB = new ArrayList<MyData>()
both contain object of type MyData and MyData contain these variables.
MyData {
String name;
boolean check;
}
ListA 和 ListB 都包含 MyData 对象,现在我必须在这里比较两个列表的对象值 name 以及 check 变量,如 ListA> 包含这些对象值
ListA and ListB both contains MyData objects ,now I have to compare both the list's object values here name as well check variable like if ListA contains these object values
ListA = ["Ram",true],["Hariom",true],["Shiv",true];
和 ListB 也包含
and ListB also contain
ListB = ["Ram",true],["Hariom",true],["Shiv",true];
然后我必须比较列表并返回 false 因为两个列表是相同的但是如果 ListA 包含
then i have to compare lists and return false because both list are same But if ListA contains
ListA = ["Ram",true],["Hariom",true],["Shiv",false];
和ListB包含
ListB = ["Ram",true],["Hariom",true],["Shiv",true];
然后我必须比较列表并返回true,因为两个列表都不相同
then I have to compare lists and return true because both list are not same
或反之亦然,因此任何列表值的任何细微变化我都必须返回 true.我必须在这里提到的一件事是对象可以按任何顺序排列.
or vice-versa so any slight change in the any list values I have to return true. One thing I have to mentioned here objects can be in any order.
推荐答案
我得到了上述问题的解决方案
I got this solution for above problem
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 提到)..所以我做了以下更改.
EDITED:-
How can we cover this...
Imagine if you had two arrays "A",true "B",true "C",true and "A",true "B",true "D",true. Even though array one has C and array two has D there's no check that will catch that(Mentioned by @Patashu)..SO for that i have made below changes.
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 比较两个列表的对象值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!