当前位置: 首页 > 知识库问答 >
问题:

Java-等于列表返回假?

郭华美
2023-03-14

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

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。

我尝试了使用

我做错了什么?

共有1个答案

葛晔
2023-03-14

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

if(implsNaConfig.equals(impls NoApto))中总是出现“false”的原因是因为我的CcustoPrestadorOuImplDTOclass没有实现 方法。

所以我编辑了类文件并自动生成了 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);
}

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

谢谢大家。

 类似资料:
  • 我有一个带有键的HashMap,值是字符串。我想通过以字符串“locationid”开头的键值过滤HashMap,并将键中的值返回到字符串数组列表中。HashMap的填充方式如下: 我需要arraylist中的ORG_Id值。 我找不到可以将值放入字符串列表的位置。编译错误是它不识别values()方法。 更新还尝试将筛选后的Hashmap放入另一个Hashmap中,如下所示: 但得到的编译错误是

  • 问题内容: 在Java中,要使函数返回一个与参数类型相同的对象并扩展某个类,我将输入: 是否有与此等效的C ++? 换句话说,我如何使一个函数接受任何扩展了某个类并返回相同类型的类?(这是为了抽象/纯虚拟类的目的)。 问题答案: 如果您有C ++ 11或更高版本,我们可以在这里使用 例如: 现场演示

  • 我试图访问MyModelClass上的getter方法,但我的代码返回

  • 问题内容: 返回对象的名称为。因此,当我致电时,此代码将失败。我有什么办法可以解决临时问题吗?还是我应该怎么做? ps这是我在python中的第一个代码。我认为这是功能。 问题答案: 您可以使用返回的反向迭代器。调用时,它会在列表中进行原位反转,并返回None。 编辑: 我知道您现在正在尝试执行的操作,在我看来,仅凭列表理解就可以轻松完成此操作: 这基本上是在第一个元素之后查看所有元素,并收集所有

  • 有人能告诉我为什么列表返回空吗?我的xpath是准确的,因为我重新检查了它,但我仍然无法迭代它,而调试for循环甚至没有执行。我不确定我哪里出了问题。

  • 我想知道在java中是否有与此等效的: 当然,假设。。。有一个名为Person的类,其FirstName字段和LastName字段为{get;set;}