将两个arraylists与多个set字段进行比较

时间:2012-07-23 23:31:06

标签: java

我正在尝试比较两个ArrayLists,但我似乎无法让它工作。

假设:

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

 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。我有问题使用双循环来绕过两个列表找到哪些存在,哪些不存在。有人能指出我正确的方向吗?如果您需要更多信息,请在下方发表评论。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

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

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

来源 - &gt;生成hashCode()和equals ...

如果不使用eclipse,那么看看EqualsBuilder&amp;来自Apache Commons的HashCodeBuilder:

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