[英]How to compare two Lists of objetcs for difference in objects fields?
同事們,我有兩個不同對象的列表。
List<SharesEntity> MainSystemSecurities; List<SecureEntity> SupportSystemSecurities;
對象SharesEntity
和SecureEntity
有一個相同的ISI。 在某些情況下,ISIN在MainSystemSecurities
集合的對象中是相同的,但在某些情況下, SupportSystemSecurities
和MainSystemSecurities
集合的對象中存在不同的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.