Как сравнить два массива
Короткий ответ
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() — Сравнивает содержимое двух массивов поэлементно.