Java比较两个List的对象值? [英] Java Compare Two List's object values?
问题描述
我有两个列表* * ListA< MyData> listA = new ArrayList< MyData>()
**和 ListB< MyData> listB = new ArrayList< MyData>()
都包含 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对象,现在我必须比较两个列表的此处的对象值名称以及检查变量,如果 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还包含
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比较两个List的对象值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!