java - 我应该如何在 Java 中获得结果使用流?
问题描述
这里是一个字符串[]
String[] strings = {"3", "1", "4", "3", "2"};
我想将其更改为数字然后排序和累积操作
- 更改号码
int[] ints = {3, 1, 4, 3, 2};
- 种类
int[] ints = {1, 2, 3, 3, 4};
- 累积操作
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
我应该怎么做才能得到我想要的结果?
解决方案
String[] strings = {"3", "1", "4", "3", "2"};
AtomicInteger ai = new AtomicInteger();
Arrays.stream(strings)
.mapToInt(Integer::parseInt)
.sorted()
.map(ai::addAndGet).sum(); // returns 32