同事,我有两个不同对象的列表。List<SharesEntity> MainSystemSecurities;List<SecureEntity> SupportSystemSecurities;
对象SharesEntity
和SecureEntity
具有相同的域ISIN。
在某些情况下,theese集合的对象中的ISIN相同,但在某些情况下,SupportSystemSecurities
和MainSystemSecurities
集合的对象中的ISIN有所不同。
我需要了解SupportSystemSecurities
列表中缺少哪些对象(更好地告诉ISIN)。
怎么做?比较两个集合(比较集合对象的文件dl)的更好方法是什么?
最佳答案
从第一个列表构建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
)。