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

我有一个整数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()调用使我印象深刻,这可能是用其他方式更好地表达的。

任何帮助将是巨大的!

谢谢,
安东尼

最佳答案

虽然我无法基于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();

08-06 15:29