对象比较是否相等: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;

}

}

我有上述2个类(POJO),它们都是绝对相同的(除了课程名称),我将它们添加到两个数组列表: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合同。

以上是 对象比较是否相等:JAVA 的全部内容, 来源链接: utcz.com/qa/399898.html

回到顶部