1

我正在尝试流化以下逻辑:

我有一个整数 id 到整数计数的映射。我有一个代表 id 的 Pojos 列表。我想将两者合并,并将 pojos 映射到整数计数。

目前我有:

  return EntryStream.of(idToCountMapping)
      .mapKeys(k -> StreamEx.of(pojos).findFirst(s -> s.getId().equals(k)))
      .filterKeys(Optional::isPresent)
      .mapKeys(Optional::get)
      .mapKeyValue(SuperCoolNewPojo::new)
      .toList(); 

第一个mapKeys()电话让我印象深刻,因为它可能以不同的方式更好地表达。

任何帮助都会很棒!

谢谢,安东尼

4

1 回答 1

0

虽然我无法回答基于的完整性streamex,但从我可以推断和概念化为使用流的方法:

该集合pojos可以转换为Map例如:

Map<String, POJO> idToPojoMap = pojos.stream()
                                     .collect(Collectors.toMap(Pojo::getId, 
                                                   Function.identity(), (a,b) -> a);

此外,它在您的代码中的使用变得更简单:

return EntryStream.of(idToCountMapping)
      .filterKeys(k -> idToPojoMap.keySet().contains(k)) // only if part of the created map
      .mapKeyValue(SuperCoolNewPojo::new)
      .toList(); 
于 2019-11-22T02:39:02.163 回答