需要使用Java 8流找到各个对角线元素的和。
2d Array - {
{ 1, 2, 3 },
{ 5, 6, 7 },
{ 8, 2, 3 }
}
Output - Sum1 (1+6+3) = 10
Sum2 (3+6+8) = 17
我知道通过循环数组来做到这一点。可以使用Java 8流完成此操作吗?如果是,怎么办?
答案 0 :(得分:3)
如果您创建数组的索引的IntStream
,将每个索引映射到所需对角线的元素,然后对所得的IntStream
求和,则可以轻松完成此操作:
public static void diagonalSums ()
{
int[][] arr = {{1, 2, 3},
{5, 6, 7},
{8, 2, 3}};
System.out.println("first " + IntStream.range(0,arr.length).map(i -> arr[i][i]).sum());
System.out.println("second " + IntStream.range(0,arr.length).map(i -> arr[i][arr.length-1-i]).sum());
}
输出:
first 10
second 17