Конвертировать 2D список в 2D ArrayList в Java - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь преобразовать 2D-список в 2D-массив ArrayList в Java Затем я преобразую 2D-массив ArrayList в 2D Array и реализую циклы для возврата абсолютной разности 2-х диагоналей матрица.

Как мне преобразовать 2D ArrayList arr в 2D ArrayList?

Вот моя работа по преобразованию входного списка в ArrayList:

    public static int diagonalDifference(List<List<Integer>> arr) {

    //first: 2D List --> 2D ArrayList
    int[][] a = new int[arr.size()][];
    for (int i=0; i<arr.size(); i++) {
        List<Integer> row = arr.get(i);
        a[i] = row.toArray(new int[row.size()]);

    //second: 2D ArrayList --> int[][]

    //third: nested for loop through int[][]to difference between diagonals of 2d array
    }

Вот мой полный код.

 public static int diagonalDifference(List<List<Integer>> arr) {
    List<List<Intger>> arrList = new ArrayList<>();

    int[][] a = new int[arr.size()][];
    for (int i=0; i<arr.size(); i++) {
        List<Integer> row = arr.get(i);
        a[i] = row.toArray(new int[row.size()]);
    }

        int pri = 0;
        int sec =0;

    for(int i=0; i<a.length; i++) {
        for(int j=0; j <a.length; j++) {

            if (a[i] == a[j]) {
                pri += a[i];
            }

            if (i == a.length - j - 1) {
                sec += a[i];
            }

        }
    }
    return Math.abs(pri - sec);

}

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Это также должно работать: я тестировал только сейчас.

row.stream (). MapToInt (Integer :: intValue) .toArray ();

1 голос
/ 19 февраля 2020

Я думаю, что вы ищете:

public static int[][] diagonalDifference(List<List<Integer>> arr) {
    return arr.stream()
            .map(a -> a.stream().mapToInt(Integer::valueOf).toArray())
            .toArray(int[][]::new);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...