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