首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java - Equals列表返回假?

Java - Equals列表返回假?
EN

Stack Overflow用户
提问于 2018-10-11 05:02:41
回答 1查看 782关注 0票数 1

我有这个代码来比较两个列表是否有相同的对象:

代码语言:javascript
复制
List<CcustoPrestadorOuImplDTO> implsNaConfig = configImplPermitida.getImplementos();
List<CcustoPrestadorOuImplDTO> implsNoApto = configuracaoImplementoDoApontamento.getImplementos();
Collections.sort(implsNaConfig, Comparator.comparing(o -> o.getCdCcusto()));
Collections.sort(implsNoApto, Comparator.comparing(o -> o.getCdCcusto()));

if ( implsNaConfig.equals(implsNoApto)  ){
    return true;
}

在拆解中,我有这样的情况:

正如您所看到的,这两个列表都具有相同的对象和相同的属性。

但是,比较两个列表是否相等的代码总是返回false。

我尝试过使用containsAll()方法,但由于某种原因也返回了false。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-11 05:16:17

正如@DawoodibnKareem问的那样,我将发布解决方案:

之所以在if ( implsNaConfig.equals(implsNoApto) ) its中总是得到"false“,是因为我的CcustoPrestadorOuImplDTO类没有实现equals方法。

因此,我编辑了类文件并自动生成equals方法,它起作用了。

CCustoPrestadorOuImplDTO类中的equals方法:

代码语言:javascript
复制
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    CcustoPrestadorOuImplDTO that = (CcustoPrestadorOuImplDTO) o;
    return Objects.equals(cdCcusto, that.cdCcusto) &&
            Objects.equals(deCcusto, that.deCcusto) &&
            Objects.equals(grupoOperativo, that.grupoOperativo) &&
            Objects.equals(deGrupoOperativo, that.deGrupoOperativo);
}

这是HashCode()方法:

代码语言:javascript
复制
@Override
public int hashCode() {

    return Objects.hash(cdCcusto, deCcusto, grupoOperativo, deGrupoOperativo);
}

这真的很简单,但我甚至不认为这是问题的原因。

谢谢大家。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52748741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档