在java arraylist中查找重复对象
首先,我想说,我一直在寻找答案,但没有找到合适的解决方案。所以我决定把它贴在这里
我有一个对象的ArrayList(ArrayList(Provider))。提供者对象有名字、姓氏、NPI编号和列表(我没有列出所有字段)
Provider {
private long providerId;
private String npiNumber;
private PersonName providerName;
private List<Address> providerAddresses;
}
现在,我想根据这些属性(名字、姓氏、NPI、地址)查找ArrayList是否有重复项。每个提供商将有2个地址。我们遇到的问题是,提供者对象是从XSD生成的,无法修改。所以我不能重写equals和hashcode方法。所以Hashset(list)不起作用
那么,检查ArrayList是否有重复对象的最佳方法是什么呢。请告诉我
谢谢
哈里什
# 1 楼答案
如果想知道重复项是什么,可以使用自定义的
Comparator<Provider>
或树形图创建TreeSet<Provider>
# 2 楼答案
你试过apache commons CompareToBuilder吗?它使用反射来比较对象,甚至可以处理私有成员。我相信它可以做一个深入的比较,所以它应该能够遵循您的列表元素并进行比较。然而,如果不能,你可能不得不分别比较它们
无论如何,您应该能够使用TreeSet和自定义比较器的一些组合。 注意:此代码未经测试,可能不是最有效的方法,但它应该用最少的代码完成工作