0

我正在尝试比较两个 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 进行比较,看看哪些 List2 中不存在 List1 中的那些,并将其添加到 List2 中。我在使用双 for 循环遍历两个列表以查找哪些存在和哪些不存在时遇到问题。有人可以指出我正确的方向吗?如果您需要更多信息,请在下方评论。

4

2 回答 2

5

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

for (xTypeClass x : List1) {
    if (!List2.contains(x)) {
        List2.add(x);
    }
}
于 2012-07-23T23:40:12.347 回答
0

丢弃 list1,equals() 和 hashCode() 实现:

    list1.removeAll(list2); // get differnce
    list2.addAll(list1);    // add difference

如果您使用的是 eclipse,那么对于您的 xTypeClass 类,您可以使用:

源 -> 生成 hashCode() 并等于...

如果不使用 Eclipse,请查看 Apache Commons 的 EqualsBuilder 和 HashCodeBuilder:

http://blog.andrewbeacock.com/2008/08/write-simpler-equals-hashcode-java.html

于 2012-07-24T00:01:15.413 回答