同事,我有两个不同对象的列表。

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

对象SharesEntitySecureEntity具有相同的域ISIN。
在某些情况下,theese集合的对象中的ISIN相同,但在某些情况下,SupportSystemSecuritiesMainSystemSecurities集合的对象中的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)。

09-09 21:53