【发布时间】:2020-04-02 00:26:40
【问题描述】:
我可以有 N 个不同长度的数组。 重要的事情是我不知道我可以拥有多少个数组。 让我们举一个只有 3 个数组的例子:
Integer arr1[] = {5, 10, -5};
Integer arr2[] = {8, 3};
Integer arr3[] = {12, -1, 0, 9};
List<String> result = Arrays.stream(arr1)
.flatMap(s1 -> Arrays.stream(arr2)
.flatMap(s2 -> Arrays.stream(arr3)
.map(s3 -> s1 + s2 + s3)))
.collect(Collectors.toList());
是否可以使用 Stream 为 N 数组做这样的事情?
各位。另一个预期结果的例子
Integer arr1[] = {2, 4, 5};
Integer arr2[] = {2, 4, 5};
Integer arr3[] = {2 , 4, 5};
List<Integer> result = Arrays.stream(arr1)
.flatMap(s1 -> Arrays.stream(arr2)
.flatMap(s2 -> Arrays.stream(arr3)
.map(s3 -> s1 + s2 + s3))).sorted().collect(Collectors.toList());
System.out.println(" List of results: "+result);
// List of results: [6, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15]
【问题讨论】:
-
这些是int数组吗?
-
是的,很抱歉
-
别担心,希望答案有所帮助。
-
为什么您期望
List<String> result?你能分享给定输入的预期输出吗? -
所有元素的总和,可以使用
int sum = Stream.of(arr1, arr2, arr3) .flatMap(Arrays::stream) .mapToInt(i -> i) .sum();
标签: java arrays sum java-stream