如何使用流对列表列表中的每个元素求和?
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]
如何使用 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]