我正在尝试比较两个ArrayList,但是似乎无法正常工作。

假设:

我的主要arrayList称为List 1通过以下方式获取其值:

 ArrayList<xTypeClass> List1 = new ArrayList<xTypeClass>();
 xTypeClass tmp = new xTypeCLass();
  tmp.setName(name);
  tmp.setaddress(address);
  tmp.setPhone(phone);
  tmp.setMonth(mo);
 ..etc
 List1.add(tmp);


现在,我还有另一个list2,它保留了确切的类型格式,但是具有不同的值。我想将List2与1比较,看看List1中不存在哪些List2,并将其添加到List2中。我在使用double for循环来遍历两个列表来查找存在和不存在的问题。有人可以指出我正确的方向吗?如果您需要更多信息,请在下面评论。

最佳答案

假设您已经为xTypeClass实现了equals()和hashCode(),那么有什么理由不能仅仅这样做:

for (xTypeClass x : List1) {
    if (!List2.contains(x)) {
        List2.add(x);
    }
}

10-07 16:01