加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

lambda – 在Java 8中将不同类型的映射合并为一个

发布时间:2020-12-14 23:59:31 所属栏目:Java 来源:网络整理
导读:有两张地图 整数,字符串 map1是 ID,问题 整数,字符串 map2是 ID,Answer 我想将它们合并到一个地图 String,String resultMap是 Question,Answer这样,此映射中的Key是map1(Question)中的值,resultMap中的值是map2(Answer)中的值,这是基于相同的ID. 我可以在jav
有两张地图

><整数,字符串> map1是< ID,问题>
><整数,字符串> map2是< ID,Answer>

我想将它们合并到一个地图< String,String> resultMap是< Question,Answer>这样,此映射中的Key是map1(Question)中的值,resultMap中的值是map2(Answer)中的值,这是基于相同的ID.

我可以在java 6中轻松完成此操作,如下面的代码所示.

for(Map.Entry<Integer,String> entry:map1.entrySet()){
    qaMap.put(entry.getValue(),map2.get(entry.getKey()));
}

但我想用Java和lambdas在Java 8中编写这个.怎么做?

解决方法

假设你的密钥(ID)在两个地图中是相同的,我们可以做类似的事情
Map<String,String> map = map1.keySet().stream()
    .collect(Collectors.toMap(map1::get,map2::get));

>在上面的语句中,map1.keySet().stream()将为您提供ID流.>然后收集(Collectors.toMap(map1 :: get,map2 :: get)将从ID流创建一个Map,其中key为map1.get(id)(即你的问题),值为map2.get(id) (即你的回答)每个id.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读