Java比较两个List的对象值? [英] Java Compare Two List's object values?

查看:437
本文介绍了Java比较两个List的对象值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个列表* * 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆