如何使用流对列表列表中的每个元素求和?

How to sum every elements in a list of a list using stream?

如何使用 Java 8 流对列表列表中的每个元素求和?

例如,我在一个列表中有 3 个不同的列表,我试图对每个列表中的每个元素求和并创建另一个列表。我是 Java 8 的新手,正在尝试使用 Stream API:

解决一些问题
List<List<Integer>> cases = Arrays.asList(
        Arrays.asList(1, 1, 2), 
        Arrays.asList(3, 3, 2), 
        Arrays.asList(4, 5, 1));

我试图实现的输出:

{[4,8,10]}

你可以这样做:

List<List<Integer>> cases = Arrays.asList(Arrays.asList(1, 1, 2), Arrays.asList(3, 3, 2), Arrays.asList(4, 5, 1));

List<Integer> result = cases.stream()
        .map(list -> list.stream().mapToInt(Integer::intValue).sum())
        .collect(Collectors.toList());

System.out.println(result); // print [4, 8, 10]

您可以使用 Stream API 并减少内部列表以获得其元素的总和。

演示:

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<List<Integer>> cases = List.of(List.of(1, 1, 2), List.of(3, 3, 2), List.of(4, 5, 1));
        List<Integer> result = cases.stream()
                                    .map(e -> e.stream().reduce(0, Integer::sum))
                                    .collect(Collectors.toList());
        System.out.println(result);
    }
}

输出:

[4, 8, 10]

ONLINE DEMO