list<Map> 转stream流计算
时间: 2023-12-05 07:04:07 浏览: 39
假设我们有一个 `List<Map<String, Integer>>`,下面是将其转换为 `Stream` 的示例代码:
```java
List<Map<String, Integer>> list = new ArrayList<>();
// 添加数据
Map<String, Integer> map1 = new HashMap<>();
map1.put("a", 1);
map1.put("b", 2);
map1.put("c", 3);
list.add(map1);
Map<String, Integer> map2 = new HashMap<>();
map2.put("a", 4);
map2.put("b", 5);
map2.put("c", 6);
list.add(map2);
// 将 List<Map> 转为 Stream<Map>
Stream<Map<String, Integer>> stream = list.stream();
// 对每个 Map 进行计算
stream.forEach(map -> {
int sum = map.values().stream().mapToInt(Integer::intValue).sum();
System.out.println("Map " + map + " 的值之和为:" + sum);
});
```
输出结果为:
```
Map {a=1, b=2, c=3} 的值之和为:6
Map {a=4, b=5, c=6} 的值之和为:15
```
在上面的代码中,我们首先将 `List<Map>` 转换为 `Stream`,然后对每个 `Map` 执行计算。在计算中,我们使用了 `map.values()` 将 `Map` 中的值转换为 `Stream<Integer>`,然后使用 `mapToInt` 将 `Stream<Integer>` 转换为 `IntStream`,最后使用 `sum` 方法计算和。