Collegues,我有两个不同对象的列表。
List<SharesEntity> MainSystemSecurities;
List<SecureEntity> SupportSystemSecurities;
对象SharesEntity
和SecureEntity
有一个相同的错误ISIN。
在某些情况下,ISIN在theese集合的对象中是相同的,但在某些情况下,SupportSystemSecurities
和MainSystemSecurities
集合的对象中存在不同的ISIN。
我需要了解SupportSystemSecurities
列表中缺少哪些对象(最好告诉ISIN)MainSystemSecurities
。
怎么做?比较两个集合(比较集合对象的文件)的更好方法是什么?
答案 0 :(得分:2)
从第一个列表中构建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
)。
答案 1 :(得分:1)
以最简单的方式,您可以使用循环和if语句来比较两个列表中的每个对象,然后将不同的对象存储在新列表中。你的if语句就像
If (MainSystemSecurities [i].ISIN == SupportSystemSecurities [j].ISIN){
List1.add (MainSystemSecurities [i]);
List2.add (SupportSystemSecurities [j]);
}