【发布时间】:2021-02-09 13:17:23
【问题描述】:
假设我有一个这样的数组 - [1, 1, 1, 2, 3]
我需要使用 streams 并需要一个数组 - [1,2,3,5,8] 一个一个地添加元素的值。
使用 Java Streams 或在接受输入时最好的方法是什么? (以最小的复杂性)
【问题讨论】:
-
流操作意味着对每个元素独立执行。
标签: java loops java-stream
假设我有一个这样的数组 - [1, 1, 1, 2, 3]
我需要使用 streams 并需要一个数组 - [1,2,3,5,8] 一个一个地添加元素的值。
使用 Java Streams 或在接受输入时最好的方法是什么? (以最小的复杂性)
【问题讨论】:
标签: java loops java-stream
最好的方法是不使用流,而是使用带有 lambda 的 Arrays.parallelPrefix 方法来添加连续值。
int[] vv = {1, 1, 1, 2, 3};
Arrays.parallelPrefix(vv, (a,b)-> a + b);
System.out.println(Arrays.toString(vv));
打印
[1, 2, 3, 5, 8]
这是您的 Stream 解决方案。使用流可能有更好的方法,但它使用嵌套流来计算重复的和并将它们返回到数组中。
int[] result = IntStream.range(0, vv.length).map(
i -> IntStream.range(0, i+1).map(k -> vv[k]).sum())
.toArray();
System.out.println(Arrays.toString(result)); // Prints as before.
【讨论】: