Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сравнить два массива

Короткий ответ

Arrays.equals() сравнивает длину и элементы по порядку:

void main() {
    int[] a = {1, 2, 3};
    int[] b = {1, 2, 3};
 
    IO.println(Arrays.equals(a, b));
}

Результат:

true

Вложенные массивы

Для массивов массивов нужен Arrays.deepEquals():

void main() {
    int[][] a = {{1, 2}, {3}};
    int[][] b = {{1, 2}, {3}};
 
    IO.println(Arrays.equals(a, b));
    IO.println(Arrays.deepEquals(a, b));
}

Результат:

false
true

Где отличаются

Arrays.mismatch() возвращает индекс первого различия или -1, если массивы равны:

void main() {
    int[] a = {1, 2, 3, 4};
    int[] b = {1, 2, 7, 4};
 
    IO.println(Arrays.mismatch(a, b));
}

Результат:

2

Без учёта порядка

Отсортируйте копии и сравните их:

void main() {
    int[] a = {3, 1, 2};
    int[] b = {2, 3, 1};
 
    int[] sortedA = a.clone();
    int[] sortedB = b.clone();
    Arrays.sort(sortedA);
    Arrays.sort(sortedB);
 
    IO.println(Arrays.equals(sortedA, sortedB));
}

Результат:

true

Частая ошибка

Сравнивать массивы через == или equals(). Оба способа проверяют, что это один и тот же объект:

void main() {
    int[] a = {1, 2, 3};
    int[] b = {1, 2, 3};
 
    IO.println(a == b);
    IO.println(a.equals(b));
}

Результат:

false
false

Функции из этого ответа

  • Arrays.equals() — Сравнивает содержимое двух массивов поэлементно.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.