gpt4 book ai didi

java - 使用 Java 8 流以函数式方式生成数组的连续总和

转载 作者:行者123 更新时间:2023-11-30 10:26:18 26 4
gpt4 key购买 nike

我有一个 double 组,我想将其中从 0..n 开始的元素总和依次分配给另一个数组。示例:r[0] = sum(a[0..n]), r[1] = sum(a[1..n]), r[m] = sum(a[m..n]) where m <= n等等

这对于循环来说很简单:

int n = a.length;
for (int i = 0; i < n; i++) {
double sum = 0.;
for (int j = i; j < n; j++)
sum += a[j];
r[i] = sum;
}

有没有一种巧妙的方法可以在 Java 8 流中以功能方式执行此操作?使用 StreamEx 库,我可以接近于类似的东西:

for (int i = 0; i < n; i++)
r[i] = DoubleStreamEx.of(a).skip(i).sum();

我不太关心性能,这更像是一个学习流的练习。

最佳答案

double[] r = IntStream.range(0, n)
.mapToDouble(m -> Arrays.stream(a, m, n).sum())
.toArray();

关于java - 使用 Java 8 流以函数式方式生成数组的连续总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com