jdp*_*itt 3 java arrays java-8
使用IntStream对2D数组中的一系列元素求和的语法是什么?
对于1D数组,我使用以下语法:
int totalElementsInArray = 0;
totalElementsInarray = IntStream.of(myArray).sum();
Run Code Online (Sandbox Code Playgroud)
例如,假设我有一个2D数组:
int[][] my2DArray = new int[17][4];
Run Code Online (Sandbox Code Playgroud)
使用IntStream对第0行的第0-16列求和时的语法是什么?
int totalElementsInArray = 0;
totalElementsInarray = IntStream.of(my2DArray[0 through 16][0]).sum();
Run Code Online (Sandbox Code Playgroud)
您只需要int通过获取第一个元素将每个子数组映射到a :
import java.util.*;
import java.util.stream.*;
class Test {
public static void main(String args[]) {
int[][] data = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
int sum = Arrays.stream(data)
.mapToInt(arr -> arr[0])
.sum();
System.out.println(sum); // 5, i.e. data[0][0] + data[1][0]
}
}
Run Code Online (Sandbox Code Playgroud)
换一种说法:
data为a Stream<int[]>(即简单int数组流)IntStream我更喜欢这种方法而不是使用方法range,因为似乎不需要考虑子数组的索引.例如,如果你只有一个Iterable<int[]> arrays你仍然可以使用StreamSupport.stream(arrays.spliterator(), false).mapToInt(arr -> arr[0]).sum(),而范围方法需要多次迭代.
你可以这样做
IntStream.range(0, 17)
.map(i -> my2DArray[i][0])
.sum();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |