Найти сумму диагональных элементов в массиве, используя потоки Java 8 - PullRequest
0 голосов
/ 09 октября 2018

Необходимо найти сумму соответствующих диагональных элементов, используя потоки 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?Если да, то как?

1 Ответ

0 голосов
/ 14 декабря 2018

Это легко сделать, если создать 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
...