相等的对象比较:JAVA
作者:互联网
public ClassA
{
private String firstId;
private String secondId;
public void setFirstId(String firstId) {
this.firstId = firstId;
}
public String getFirstId() {
return id;
}
public void setSecondId(String secondId) {
this.secondId = secondId;
}
public String getSecondId() {
return secondId;
}
}
public ClassB
{
private String firstId;
private String secondId;
public void setFirstId(String firstId) {
this.firstId = firstId;
}
public String getFirstId() {
return id;
}
public void setSecondId(String secondId) {
this.secondId = secondId;
}
public String getSecondId() {
return secondId;
}
}
我有上面两个类(POJO)绝对相同(当然名称除外)我将添加到两个arraylists:aListA和aListB.我需要比较两个对象是否相同.如果它们是相同的,我需要将它们添加到另一个列表(commonList),如果它们恰好是不同的,我需要将它们添加到另一个列表(differentList).我写了以下代码:
ClassA clsA = null;
public ArrayList genCommonList(aList, bList)
{
for(int i = 1; i<aList.size(); i++)
{
clsA = new ClassA;
Object obj = aList.get(i);
clsA = (ClassA)obj;
if(bList.contains(clsA)
{
genCommonList.add(clsA);
}
}
public ArrayList genDifferentList(aList, bList)
{
for(int i = 1; i<aList.size(); i++)
{
clsA = new ClassA;
Object obj = aList.get(i);
clsA = (ClassA)obj;
if(!bList.contains(clsA)
{
genDifferentList.add(clsA);
}
}
我的问题是,即使两个不同POJO中的数据(两个变量,firstId和secondID)相同,它们也会被放入不同的列表中.这意味着不使用ArrayList类的contains()方法对对象进行相等性比较.我不想从POJO中的每个变量获取数据并进行比较.有没有办法比较两个变量的POJO并确定为相等或不相等?
解决方法:
虽然内容相同,但它们是不同的对象,不能满足相同的条件.您可能需要通过迭代显式地执行a.getfirstId().equals(b.getfirsId())和a.getscondID().equals(b.getSecondId()).
另一种可能性是覆盖两个POJO类中的equals和hashcode方法.请参阅此链接以获取equals/hashcode contract.
标签:java,object,equality,comparison 来源: https://codeday.me/bug/20191003/1845820.html