簡體   English   中英

如何比較兩個objetcs列表對象字段的差異?

[英]How to compare two Lists of objetcs for difference in objects fields?

同事們,我有兩個不同對象的列表。

List<SharesEntity> MainSystemSecurities; List<SecureEntity> SupportSystemSecurities;

對象SharesEntitySecureEntity有一個相同的ISI。 在某些情況下,ISIN在MainSystemSecurities集合的對象中是相同的,但在某些情況下, SupportSystemSecuritiesMainSystemSecurities集合的對象中存在不同的ISIN。

我需要了解哪些對象(更好告訴ISINs)從SupportSystemSecurities列表中缺少MainSystemSecurities

怎么做? 比較兩個集合(比較集合對象的文件)的更好方法是什么?

從第一個列表構建Map<IsinType, SharesEntity>

Map<IsinType, SharesEntity> sharesEntityMap =
    MainSystemSecurities.stream().collect(
        Collectors.toMap(SharesEntity::getIsin,
                         Functions.identity()));

然后,您可以迭代其他列表,從此映射中的第一個列表中查找實體:

for (SecureEntity secureEntity : SupportSystemSecurities) {
  SharesEntity correspondingSharesEntity = sharesEntityMap.get(secureEntity.getIsin());
  // ...
}

這假設第一個列表中每個ISIN都有一個項目。 如果不是這種情況,您可以構建Map<IsinType, List<SharesEntity>> ,然后進行類似操作(或使用Multimap )。

以最簡單的方式,您可以使用循環和if語句來比較兩個列表中的每個對象,然后將不同的對象存儲在新列表中。 你的if語句就像

If (MainSystemSecurities [i].ISIN == SupportSystemSecurities [j].ISIN){
List1.add (MainSystemSecurities [i]);
List2.add (SupportSystemSecurities [j]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM