лучший способ сравнить между двумерными целочисленными массивами в Java - PullRequest
9 голосов
/ 31 марта 2010

Я хотел бы знать, что является лучшим, быстрым и простым способом сравнения двухмерных массивов целых чисел. длина массивов одинакова. (один из массивов является временным массивом)

Ответы [ 2 ]

13 голосов
/ 31 марта 2010

Эдан написал:

просто нужно посмотреть, совпадает ли значение

Если вы хотите проверить, что a[i][j] равно b[i][j] для всех элементов, просто используйте Arrays.deepEquals(a, b).

4 голосов
/ 31 марта 2010

Посмотрите на java.util.Arrays; в нем много утилит для работы с массивами, с которыми вам следует ознакомиться.

import java.util.Arrays;

int[][] arr1;
int[][] arr2;
//...
if (Arrays.deepEquals(arr1, arr2)) //...

С API :

Возвращает true, если два указанных массива глубоко равны друг другу. В отличие от метода equals(Object[],Object[]), этот метод подходит для использования с вложенными массивами произвольной глубины.

Обратите внимание, что в Java int[][] является подтипом Object[]. У Java действительно нет двухмерных массивов. Имеет массив массивов.

Здесь показана разница между equals и deepEquals для вложенных массивов (обратите внимание, что по умолчанию Java инициализирует int массивы с нулями в качестве элементов).

    import java.util.Arrays;
    //...

    System.out.println((new int[1]).equals(new int[1]));
    // prints "false"

    System.out.println(Arrays.equals(
        new int[1],
        new int[1]
    )); // prints "true"
    // invoked equals(int[], int[]) overload

    System.out.println(Arrays.equals(
        new int[1][1],
        new int[1][1]
    )); // prints "false"
    // invoked equals(Object[], Object[]) overload

    System.out.println(Arrays.deepEquals(
        new int[1][1],
        new int[1][1]
    )); // prints "true"

Похожие вопросы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...