有两张地图
><整数,字符串> map1是< ID,问题>
><整数,字符串> map2是< ID,Answer>
我想将它们合并到一个地图< String,String> resultMap是< Question,Answer>这样,此映射中的Key是map1(Question)中的值,resultMap中的值是map2(Answer)中的值,这是基于相同的ID.
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.