java stream流,两个map,根据key取交集
时间: 2023-07-08 20:38:29 浏览: 112
可以使用Java 8中的Stream API来实现。首先将两个Map的key集合取交集,然后使用Stream的filter方法过滤出交集,最后使用Stream的collect方法将过滤后的结果收集到一个新的Map中。
示例代码如下:
```java
Map<String, Integer> map1 = new HashMap<>();
map1.put("a", 1);
map1.put("b", 2);
map1.put("c", 3);
Map<String, Integer> map2 = new HashMap<>();
map2.put("b", 4);
map2.put("c", 5);
map2.put("d", 6);
Set<String> intersection = map1.keySet().stream()
.filter(map2::containsKey)
.collect(Collectors.toSet());
Map<String, Integer> resultMap = map1.entrySet().stream()
.filter(entry -> intersection.contains(entry.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(resultMap); // 输出 {b=2, c=3}
```
在上面的示例代码中,我们首先使用Stream的filter方法过滤出两个Map的key的交集,然后使用Stream的collect方法将交集收集到一个Set中。接着,我们再使用Stream的filter和collect方法,将map1中key在交集中的entry收集到一个新的Map中。