java - 将 pojo 列表合并到可以在键上组合的整数 Map

标签 java java-8 java-stream streamex

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

我有一个整数 id 到整数计数的映射。我有一个代表 id 的 Pojo 列表。我想将两者合并并获得 pojo 到整数计数的映射。

目前我有:

  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(); 

关于java - 将 pojo 列表合并到可以在键上组合的整数 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58980866/

相关文章:

java - 连接池不会重用空闲连接

java - 为什么静态初始化器中带有 lambda 的并行流会导致死锁?

java - 如何在 Java 的 Lambda API 中构建复制函数的映射

java - 设置图标时遇到问题

java - 使用 Volley 发送数据

Java 8 使用 lambda 将 clickListener 作为参数传递

java - 使用注解时的 NullPointerException 行为

Java 8 将 int[][] 转换为 Integer[][] 的方法

java - 我是否必须在流读取的列表上进行同步?

java - 如何通过 JPA 有选择地从某个表中获取项目