Как сравнить два массива java
Перейти к содержимому

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

  • автор:

4.16. Java примеры – Как сравнить два массива

В следующем примере используется метод equals(), чтобы сравнить два массива в Java.

import java.util.Arrays; public class Main < public static void main(String[] args) throws Exception < int[] ary = ; int[] ary1 = ; int[] ary2 = ; System.out.println("Массив1 равен массиву 2? " +Arrays.equals(ary, ary1)); System.out.println("Массив1 равен массиву 3? " +Arrays.equals(ary, ary2)); > > 

Результат

Вышеприведенный пример кода даст следующий результат:

Массив1 равен массиву 2? true Массив1 равен массиву 3? false 

Оглавление

  • 1. Java примеры – Использование кода на практике
  • 2. Java примеры – Окружающая среда
  • 2.1. Java примеры – Скомпилировать файл
  • 2.2. Java примеры – Установить путь к нескольким классам
  • 2.3. Java примеры – Отладка java-файла
  • 2.4. Java примеры – Установить путь к классу
  • 2.5. Java примеры – Просмотреть текущий путь класса
  • 2.6. Java примеры – Установить назначение файла класса
  • 2.7. Java примеры – Запустить скомпилированный java-файл класса
  • 2.8. Java примеры – Узнать версию Java
  • 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
  • 3. Java примеры – Строки
  • 3.1. Java примеры – Сравнить две строки
  • 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
  • 3.3. Java примеры – Удалить нужный символ из строки
  • 3.4. Java примеры – Заменить символ в строке
  • 3.5. Java примеры – Вывод в обратном порядке
  • 3.6. Java примеры – Нахождение символа или слова в строке
  • 3.7. Java примеры – Разбиение строки на слова и символы
  • 3.8. Java примеры – Преобразование строки в верхний регистр
  • 3.9. Java примеры – Найти слово в строке
  • 3.10. Java примеры – Сравнить производительность создания строки
  • 3.11. Java примеры – Оптимизировать создание строк
  • 3.12. Java примеры – Форматирование строк
  • 3.13. Java примеры – Конкатенация строк
  • 3.14. Java примеры – Определить код Юникода символа в строке
  • 3.15. Java примеры – Буферизация строк
  • 4. Java примеры – Массивы
  • 4.1. Java примеры – Сортировка массива и поиск элемента
  • 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
  • 4.3. Java примеры – Размер двумерного массива
  • 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
  • 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
  • 4.6. Java примеры – Найти максимальный и минимальный элемент массива
  • 4.7. Java примеры – Соединить два массива в один
  • 4.8. Java примеры – Как заполнить массив числами
  • 4.9. Java примеры – Увеличить массив после инициализации
  • 4.10. Java примеры – Сравнение двух массивов
  • 4.11. Java примеры – Удаление элемента из массива
  • 4.12. Java примеры – Удаление массива из другого массива
  • 4.13. Java примеры – Одинаковые элементы массивов
  • 4.14. Java примеры – Поиск в массиве
  • 4.15. Java примеры – Равенство двух массивов
  • 4.16. Java примеры – Сравнить массивы
  • 5. Java примеры – Дата и время
  • 5.1. Java примеры – Форматирование времени в формате AM-PM
  • 5.2. Java примеры – Получение названия и номера текущего месяца
  • 5.3. Java примеры – Получить текущее время в часах и минутах
  • 5.4. Java примеры – Вывести текущее время и дату
  • 5.5. Java примеры – Вывести текущее время в 24-часовом формате
  • 5.6. Java примеры – Получить текущий месяц
  • 5.7. Java примеры – Получить текущие секунды
  • 5.8. Java примеры – Получить короткое название месяца
  • 5.9. Java примеры – Получить день недели
  • 5.10. Java примеры – Добавление времени к дате
  • 5.11. Java примеры – Отображение времени в формате другой страны
  • 5.12. Java примеры – Отображение времени на разных языках
  • 5.13. Java примеры – Прокрутить часы и месяцы
  • 5.14. Java примеры – Получить номер недели и месяц в году
  • 5.15. Java примеры – Форматы текущей даты
  • 6. Java примеры – Методы
  • 6.1. Java примеры – Перезагрузка методов
  • 6.2. Java примеры – Вывод массива с использованием метода
  • 6.3. Java примеры – Решение Ханойской башни
  • 6.4. Java примеры – Последовательность чисел Фибоначчи
  • 6.5. Java примеры – Вычисление факториала числа
  • 6.6. Java примеры – Переопределение метода
  • 6.7. Java примеры – Вывод массива с использованием метода
  • 6.8. Java примеры – Использование оператора break
  • 6.9. Java примеры – Использование оператора continue
  • 6.10. Java примеры – Использование метки в методе
  • 6.11. Java примеры – Использование операторов enum и switch
  • 6.12. Java примеры – Использование конструктора enum

Как сравнить два объектных массива в Java?

Я хотел бы знать, равны ли массивы. Я определяю равным, так как каждое значение в массиве 1 совпадает с значением в этой позиции в массиве2. Таким образом, эти два массива будут равны. Какое лучшее, почему нужно выяснить, равны ли эти два массива?

if(array1 == array2) 

не является глубоким, так что это не сработает, и я не знаю, является ли цикл по каждому элементу и их сравнение является лучшим и наиболее эффективным способом решения этой проблемы. Есть ли у кого-нибудь лучшие предложения? Изменить: мне нужны равные, которые могут входить в вложенные массивы.

Grammin 11 июль 2011, в 17:45
Поделиться

Я не думаю, что в любом случае существует «для каждого» петля. Чтобы оператор if работал, вы можете определить свой собственный класс aryClass с помощью функции isEqual (). Но я знаю, что вы ищете что-то лучшее, поэтому я оставляю это как комментарий, а не как ответ.

AudioDroid 11 июль 2011, в 15:03
Поделиться:

6 ответов

Лучший ответ

Используйте Arrays.deepEquals() . Это выполняет ту же работу, что и Arrays.equals() , но также работает с вложенными массивами.

  • e1 и e2 — это массивы типов ссылок объектов, а Arrays.deepEquals(e1, e2) вернет true
  • e1 и e2 — массивы одного и того же примитивного типа, и соответствующая перегрузка Array.equals(e1, e2) вернет true.
  • e1 == e2
  • e1.equals(e2) вернет true.

Marcelo 11 июль 2011, в 15:30
Поделиться
Пожалуйста, прочитайте Arrays.deepEquals() для Arrays.deepEquals()
Op De Cirkel 11 июль 2011, в 15:01
@Op Оп Де Циркель Я прочитал это, и теперь добавил к своему ответу. Что-то не так с методом?
Marcelo 11 июль 2011, в 15:05

Не совсем, просто deepEquals() делает слишком много, если вам это не нужно (медленно, так как он должен проверять, являются ли элементы массивами). В любом случае, я отказался от понижения

Op De Cirkel 11 июль 2011, в 15:08

@Op Оп де Циркель Вы правы насчет накладных расходов, но ОП не указывает, какие элементы находятся в массивах. Я думаю, что это только часть ответа на вопрос.

Marcelo 11 июль 2011, в 15:11
+1 Да, в зависимости от того, что вы хотите, Arrays.equals() или Arrays.deepEquals делает это.
Paŭlo Ebermann 11 июль 2011, в 15:13

Я был в состоянии сделать уникальный идентификатор класса / метода / строки / объекта на основе stacktrace, и это, спасибо!

Aquarius Power 12 нояб. 2014, в 23:03
Показать ещё 4 комментария

 /** * Returns true if the two specified arrays of Objects are * equal to one another. The two arrays are considered equal if * both arrays contain the same number of elements, and all corresponding * pairs of elements in the two arrays are equal. Two objects e1 * and e2 are considered equal if (e1==null ? e2==null * : e1.equals(e2)). In other words, the two arrays are equal if * they contain the same elements in the same order. Also, two array * references are considered equal if both are null. 

* * @param a one array to be tested for equality. * @param a2 the other array to be tested for equality. * @return true if the two arrays are equal. */ public static boolean equals(Object[] a, Object[] a2)

adarshr 11 июль 2011, в 15:10
Поделиться
@Downvoter: почему?
adarshr 11 июль 2011, в 15:40

Чтобы сравнить массивы, я бы использовал метод Arrays.equals:

if (Arrays.equals(array1, array2)) < // array1 and array2 contain the same elements in the same order >

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

Нравится ресурс?

Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума

1. Здесь обсуждается Java , а не JavaScript ! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java . В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).
3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.

Модераторы: dark_barker, wind

Java. Сравнение массивов

Здравствуйте, подскажите как можно сравнить 2 массива? Есть код, в нем 2 одинаковых массива, но условие не проходит.

package VarA; public class Task4 < public static void main(String[] args)< String[] password = ; if(args.equals(password)) System.out.println("Пароль верный"); else < System.out.println("Пароль неверный"); >for(int i = 0; i < args.length; i++) System.out.print(args[i]); System.out.println(); for(int i = 0; i < password.length; i++) System.out.print(password[i]); >> 

Отслеживать
71.9k 12 12 золотых знаков 91 91 серебряный знак 180 180 бронзовых знаков
задан 5 ноя 2016 в 9:26
101 2 2 золотых знака 2 2 серебряных знака 10 10 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

array1.equals(array2) тоже самое, что и array1 == array2 , сравниваются адреса, а не содержимое.

Вам нужно использовать Arrays.equals(array1, array2) для сравнения, т.е.

if(Arrays.equals(args, password))  

Отслеживать
ответ дан 5 ноя 2016 в 9:49
Алексей Шиманский Алексей Шиманский
71.9k 12 12 золотых знаков 91 91 серебряный знак 180 180 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *