【问题标题】:Java 8: how to 'JOIN' two Maps having the same Keys? [duplicate]Java 8:如何“加入”两个具有相同键的地图? [复制]
【发布时间】:2019-01-15 10:35:57
【问题描述】:

我有两个地图,都共享相同的键。

Map<Long/*JOIN.ID*/, Long/*Temp ID*/> tempIDsMap;
Map<Long/*JOIN.ID*/, Long/*Real ID*/> realIDsMap;

我想要得到(可能使用 Java 8 Stream API 并避免循环)是在 JOIN.ID 键上的这些映射的 JOIN,以获得如下所示的新映射:

Map<Long/*Temp ID*/. Long/*Real ID*/> realIDsByTempMap;

【问题讨论】:

  • 我不知道任何给定的框架可以为您执行此操作,因此您必须创建自己的逻辑来完成此任务。你都尝试了些什么?你能提供代码吗,你试过了吗?你能指出具体的问题或问题吗?
  • 为什么不使用循环呢?
  • 按键连接是什么意思?你的地图是Map&lt;Long, Long&gt;。那么在最终地图中选择哪个值(因为相同键的值可能不同)?你想创建Map&lt;Long, List&lt;Long&gt;&gt; 吗?

标签: java join java-8 java-stream


【解决方案1】:

使用Collectors.toMap:

Map<Long,Long> realIDsByTempMap = 
    tempIDsMap.entrySet()
              .stream()
              .collect(Collectors.toMap(Map.Entry::getValue,
                       e -> realIDsMap.get(e.getKey())));

【讨论】:

猜你喜欢
  • 2022-06-19
  • 2017-06-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2013-05-12
  • 2015-04-06
相关资源
最近更新 更多