当前位置: 首页 > 知识库问答 >
问题:

比较两个对象阵列列表

亢建木
2023-03-14

第一次来这里,所以我希望这是有意义的!

我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串:

userEnteredValue 
valueReturnedFromDatabase

比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR

我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗?

对于匹配值:

for(User u1 : l1) {
   for(User u2: l2) { 
      if(u1.getUserEnteredValue().equals(u2.getValueReturnedFromDatabase())) {
        l3.add(u1);
      }
} 

但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而是所有的值。Stackoverflow上的两篇类似帖子建议在User类中实现equals和hashcode方法。这是必要的,因为我的arraylist大小不超过5到10。

共有3个答案

濮阳靖
2023-03-14

https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.对象

使用java中ArrayList提供的上述方法,遍历一个数组并检查它是否“包含()”来自其他数组的元素。

宓季同
2023-03-14

您可以使用java.util.ArrayList中的包含()方法来确定您的列表是否包含该对象。

示例:

for(User u1:l1) {
    if(!l2.contains(u1)) {
        l3.add(u1);
    }
}
夏侯玄天
2023-03-14

你可以这样做:

for(User u1 : l1) {
    boolean unique = true;
    for(User u2: l2) { 
        if(u1.getUserEnteredValue().equals(u2.getValueReturnedFromDatabase())) {
            unique = false;
            break;
        }
    } 
    if(unique){
        l3.add(u1);
    }
}
 类似资料:
  • 问题内容: 我有两个列表 , 都包含 MyData 类型的对象,而 MyData* 包含这些变量。 利斯塔和数组listB都包含MyData的对象,现在我要两个列表的对象值比较这里 的名字 ,以及 检查 变量一样,如果 利斯塔 包含这些对象值 和ListB也包含 然后我必须比较列表并返回false,因为两个列表相同但是如果ListA包含 和 ListB 包含 然后我必须比较列表并返回true,因为

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

  • 因此,我有两个大小相等的2D numpy数组,都是在两个不同的曲面上使用方法获得的。 数组中的每个值也是形式的数组(所以我基本上有一个带有1D元素的2D数组)。 基本上,我想根据条件对两者进行比较: 有没有更有效的方法可以做到这一点,而无需简单地迭代任何一个数组,如下所示?

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

  • 假设我有两个列表,现在listOld包含旧员工信息,listNew包含新员工信息 我如何比较这两个列表并返回新列表,其中包含,添加的新员工列表,包含,删除的员工列表,包含上次更新已更改的员工的新列表? 我只能想到迭代列表和比较,可能最终几乎是O(n2)时间,这可以由任何util类更有效地完成吗?