gpt4 book ai didi

java - 对象比较是否相等 : JAVA

转载 作者:行者123 更新时间:2023-12-02 08:34:35 25 4
gpt4 key购买 nike

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),如果它们碰巧不同,我需要将它们添加到另一个列表(differenceList)。我编写了以下代码:

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 和 secondaryID)相同,它们也会被放入不同的列表中。这意味着不会使用 ArrayList 类的 contains() 方法比较对象的相等性。我不想从 POJO 内的每个变量获取数据并进行比较。有没有办法比较两个变量的 POJO 并确定相等或不相等?

最佳答案

使用 Object.equals 的默认实现,不同类的两个对象永远不会相同。

如果您想要这种行为,则需要覆盖类中的 .equals(以及 .hashcode,请查看 javadoc)。

(或者创建一个比较器并将其传递给您的集合)。

关于java - 对象比较是否相等 : JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com