亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java - 等于列表返回 false?

Java - 等于列表返回 false?

Cats萌萌 2021-11-11 13:31:01
我有這個代碼比較兩個列表是否具有相同的對象: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。我究竟做錯了什么?
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

正如@DawoodibnKareem 所問,我將發布解決方案:


總是在其中得到“false”的原因是if ( implsNaConfig.equals(implsNoApto)  )因為我的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);

}

這真的很簡單,但我什至不認為這是問題的原因。


謝謝大家。


查看完整回答
反對 回復 2021-11-11
  • 1 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號