繁体   English   中英

迭代地在数组中添加值并替换值

[英]Iteratively add values in array and replace values

假设我有一个这样的数组 - [1, 1, 1, 2, 3]

我需要利用streams并需要一个数组 - [1,2,3,5,8] ,它正在逐个添加元素的值。

使用 Java Streams或在接受输入时执行此操作的最佳方法是什么? (以最小的复杂性)

最好的方法是不使用流,而是使用Arrays.parallelPrefix方法和 lambda 来添加连续值。

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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM