Hec*_*ssa 5 java java-8 java-stream
我想知道是否有任何方法可以在阵列上的单次迭代中实现以下内容.只需要有两个不同的结果流出.
double sum = Arrays.stream(doubles).sum();
double sumOfSquares = Arrays.stream(doubles).map(d -> d * d).sum();
Run Code Online (Sandbox Code Playgroud)
Ale*_* C. 13
那么,您可以使用自定义收集器,例如:
double[] res =
Arrays.stream(doubles)
.collect(() -> new double[2],
(arr, e) -> {arr[0]+=e; arr[1]+=e*e;},
(arr1, arr2) -> {arr1[0]+=arr2[0]; arr1[1]+=arr2[1];});
double sum = res[0];
double sumOfSquares = res[1];
Run Code Online (Sandbox Code Playgroud)
但是我认为你没有太多的可读性,所以我会坚持使用多遍解决方案(或者在这种情况下可能只使用for循环).
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |