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

时间:2017-09-02 17:22:33

标签: java functional-programming java-stream

我有一个2D整数数组:

int arr[][] = new int[rows][columns];

第n行总和可以使用:

找到
int rSum=Arrays.stream(arr[n]).sum();

如何找到第p列总和?

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

以上行不起作用。

2 个答案:

答案 0 :(得分:3)

    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

答案 1 :(得分:2)

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

int cSum = Arrays.stream(arr).mapToInt(row -> row[p]).sum();

这样做如下:首先我们从arr构造一个流。此流将包含“矩阵”的。然后,对于每个row,我们mapToInt将其int:该行的p - 元素。然后,我们将sum(..)的{​​{1}}流一起int加到总和中。