gpt4 book ai didi

Java - 等于列表返回 false?

转载 作者:行者123 更新时间:2023-12-02 10:43:39 25 4
gpt4 key购买 nike

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

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;
}

在调试中我遇到这样的情况:

enter image description here

如您所见,两个列表具有相同的对象和相同的属性。

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

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

我做错了什么?

最佳答案

正如@DawoodibnKareem 所问,我将发布解决方案:

if ( implsNaConfig.equals(implsNoApto) ) 中总是得到“false”的原因是因为我的 CcustoPrestadorOuImplDTO 类没有 equals 方法已实现。

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

CCustoPrestadorOuImplDTO 类中的 equals 方法:

@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() 方法:

@Override
public int hashCode() {

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

这真的很简单,但我什至没有想到这是问题的原因。

谢谢大家。

关于Java - 等于列表返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52748741/

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