java - 使用流从 map 中求和值并收集到列表

标签 java java-stream

如果我有一个列表列表:

List<List<Map<String, Object>>> myList = new ArrayList<>();

List<Map<String, Object>> e1 = new ArrayList<>();
e1.add(new HashMap<String, Object>(){{put("test", 1);}});
e1.add(new HashMap<String, Object>(){{put("test", 6);}});

List<Map<String, Object>> e2 = new ArrayList<>();
e2.add(new HashMap<String, Object>(){{put("test", 9);}});
e2.add(new HashMap<String, Object>(){{put("test", 2);}});

myList.add(e1);
myList.add(e2);

我希望能够迭代 myList 对内部列表(e1e2)中的整数求和并返回一个列表总和:

List<Integer> result = [7, 11]

最佳答案

你可以这样做:

List<Integer> result = myList.stream()
        .map(list -> list.stream()
                        .flatMapToInt(map -> map.values()
                                                .stream()
                                                .mapToInt(i -> (int) i))
                        .sum())
        .collect(Collectors.toList());

关于java - 使用流从 map 中求和值并收集到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974264/

相关文章:

java - 如何使用java8流结合grouping by语句计算值的总和

java - volatile 读取冲突

java - 向新连接的客户端发送问候语

java流从Map获取Map

java8 使用累加器和组合器减少流

java - 如何使用流将 List<Entry> 转换为值是列表的 Map?

java - 将 SQL 查询中的列名称/值解析为 HashMap <String, String>

java - 从互联网获取文本

java - 构建 .dll 时找不到 GCC 选项

Java 8 toMap 用于映射 <string, Collection<String>>