如何使用Java streams查找数组列和

如何使用Java streams查找数组列和,java,functional-programming,java-stream,Java,Functional Programming,Java Stream,我有一个二维整数数组: int arr[][] = new int[rows][columns]; 第n行总和可通过以下方式找到: int rSum=Arrays.stream(arr[n]).sum(); 如何找到第pth列的总和 int cSum=Arrays.stream(arr[][p]).sum(); 上面这行不行 您可以映射p-th元素上的每一行: int arr[][] = new int[][] { {1,2},{3,4},{5,6}

我有一个二维整数数组:

int arr[][] = new int[rows][columns];
第n行总和可通过以下方式找到:

int rSum=Arrays.stream(arr[n]).sum();
如何找到第pth列的总和

int cSum=Arrays.stream(arr[][p]).sum();

上面这行不行

您可以映射
p
-th元素上的每一行:

    int arr[][] = new int[][] {
            {1,2},{3,4},{5,6}
    };
    int s = Arrays.stream(arr).mapToInt(a -> a[1]).sum();
    System.out.println(s); // 12
int cSum = Arrays.stream(arr).mapToInt(row -> row[p]).sum();

其工作原理如下:首先,我们从
arr
构造一个流。此流将包含“矩阵”的行。然后,对于每个这样的
,我们将
mapToInt
映射到
int
:该行的
p
-第个元素。然后我们把
sum(…)
int
s流一起加到sum中。

谢谢!不过我觉得应该是Arrays.stream