当前位置: 首页 > 面试题库 >

Java比较两个列表的对象值?

樊奇思
2023-03-14
问题内容

我有两个列表 *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 包含

 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;

    }


 类似资料:
  • 问题内容: 我有两个列表 , 都包含 MyData 类型的对象,而 MyData* 包含这些变量。 利斯塔和数组listB都包含MyData的对象,现在我要两个列表的对象值比较这里 的名字 ,以及 检查 变量一样,如果 利斯塔 包含这些对象值 和ListB也包含 然后我必须比较列表并返回false,因为两个列表相同但是如果ListA包含 和 ListB 包含 然后我必须比较列表并返回true,因为

  • 第一次来这里,所以我希望这是有意义的! 我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串: 比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR 我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗? 对于匹配值: 但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而

  • 问题内容: 我有两个列表(不是Java列表,可以说两列) 例如 我想要一个返回多少个相同元素的方法。对于此示例,它应该为3,并且应该返回列表的相似值和不同的值。 如果是,我应该使用哈希图,然后用什么方法获得结果? 请帮忙 PS:这不是学校作业:)因此,如果您只是指导我就足够了 问题答案: 编辑 这是两个版本。一种使用,另一种使用 比较它们并从中创建您自己的版本,直到获得所需的内容。 这应该足以覆盖

  • 在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部

  • 我想断言,相同类型的两个对象列表在该对象的属性值方面是相同的。例如,我有两个Person对象列表,它们具有名字、姓氏和中间名属性。每个Person对象都有这些属性(java bean)的方法setter和getter,构造函数不包含任何参数。 让我们假设这里已经有一个名为existingPersonList的两个人的列表,该列表具有以下属性: 现有人员1:firstName=鲍勃,lastName

  • 这与Java比较两个列表的不同之处在于,我需要能够在jUnit中断言相等性,而不仅仅是比较列表。