首页 > 解决方案 > 我应该如何在 Java 中获得结果使用流?

问题描述

这里是一个字符串[]

String[] strings = {"3", "1", "4", "3", "2"};

我想将其更改为数字然后排序和累积操作

  1. 更改号码
int[] ints = {3, 1, 4, 3, 2};
  1. 种类
int[] ints = {1, 2, 3, 3, 4};
  1. 累积操作
1           =    1
1+2         =    3
1+2+3       =    6 
1+2+3+3     =    9
1+2+3+3+4   =   13

result      =   1+3+6+9+13  = 32
int[] ints = {1, 2, 3, 3, 4};

int result = 0;

for(int i = 0; i < 5; i++) {
    int sum = 0;
        for(int j = 0; j <= i; j++) {
            sum += ints[j];
        }
    result += sum;
}
result = 32

最后,我想将此代码更改为流式传输。

我试图:

String[] strings = {"3", "1", "4", "3", "2"};
            
int asInt = stream(strings)
                .mapToInt(Integer::parseInt)
                .sorted()
                .reduce(Integer::sum)
                .getAsInt();
asInt = 13

我应该怎么做才能得到我想要的结果?

标签: javajava-stream

解决方案


String[] strings = {"3", "1", "4", "3", "2"};
AtomicInteger ai = new AtomicInteger();

Arrays.stream(strings)
      .mapToInt(Integer::parseInt)
      .sorted()
      .map(ai::addAndGet).sum();  // returns 32

推荐阅读