【问题标题】:Iteratively add values in array and replace values迭代地在数组中添加值并替换值
【发布时间】:2021-02-09 13:17:23
【问题描述】:

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

我需要使用 streams 并需要一个数组 - [1,2,3,5,8] 一个一个地添加元素的值。

使用 Java Streams 或在接受输入时最好的方法是什么? (以最小的复杂性)

【问题讨论】:

  • 流操作意味着对每个元素独立执行。

标签: java loops java-stream


【解决方案1】:

最好的方法是不使用流,而是使用带有 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.

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 1970-01-01
    • 2019-07-08
    • 2023-03-20
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多