Сравните 2D-массивы в Java и распечатайте различия

РЕДАКТИРОВАТЬ: закрыт, потому что кажется, что код ниже работает

В настоящее время я сталкиваюсь со следующей проблемой:
У меня есть два двумерных массива, из которых второе измерение всегда имеет размер 7 (поэтому максимальный индекс равен 6).
Теперь мне нужно сравнить эти массивы.
Я хочу распечатать, если было добавлено или удалено поле, по любому индексу.

Например:

Массив 1:

 0|1|2|3
0 |1|2|5
1 |4|4|6
(...)
6 |6|2|8

Массив 2

 0|1|2|3|4
0 |1|1|2|5
1 |4|4|4|6
(...)
6 |6|7|2|8

Как видите, я добавил столбец ко второму массиву.
Теперь мне нужно распечатать этот столбец или добавить его в список массивов.

То же самое должно случиться, когда столбец будет удален или изменен.

Как я могу этого достичь?

Мой код до сих пор:

static List<String[]> differences;
static List<String[]> checkForDifferences(String[][] tableOld,String[][] tableNew) {
    differences = new ArrayList<String[]>();
    if(!Arrays.deepEquals(tableNew,tableOld)) {
        for(int hour = 0; hour < tableOld.length;hour++) {
            try {
                boolean removed = true;
                for(int hour2 = 0;hour2 < tableNew.length;hour2++)
                    if(Arrays.equals(tableOld[hour],tableNew[hour2]))
                        removed = false;
                    if(removed)
                        differences.add(new String[]{"-",tableOld[hour][0], tableOld[hour][1], tableOld[hour][2], tableOld[hour][3], tableOld[hour][4], tableOld[hour][5], tableOld[hour][6]});
            } catch (ArrayIndexOutOfBoundsException e){
                e.printStackTrace();
                break;
            }
        }
        for (int hour = 0; hour < tableNew.length; hour++) {
            try {
                boolean added = true;
                for (int hour2 = 0; hour2 < tableOld.length; hour2++)
                    if (Arrays.equals(tableNew[hour], tableOld[hour2]))
                        added = false;
                if (added)
                    differences.add(new String[]{"+", tableNew[hour][0], tableNew[hour][1], tableNew[hour][2], tableNew[hour][3], tableNew[hour][4], tableNew[hour][5], tableNew[hour][6]});
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
                break;
            }
        }

        return differences;
    } else {
        return null;
    }
}

1 ответ

Решение

Видимо, мой код работает. Я просто использовал это неправильно.

Другие вопросы по тегам