logo

Як порівняти два масиви в Java?

На Java ми можемо порівняти два масиви шляхом порівняння кожного елемента масиву. Java Масиви клас надає два попередньо визначені методи, які використовуються для порівняти два масиви в Java .

У цьому розділі ми дізнаємося як порівняти два масиви використовуючи Arrays.equals() метод і Arrays.deepEquals() метод. Разом з цим ми також будемо вчитися як виконати глибоке порівняння між двома масивами з відповідними прикладами.

Два масиви рівні, якщо:

  • Вони одного типу.
  • Вони мають однакову кількість елементів.
  • Відповідні пари елементів в обох масивах повинні бути рівними.
  • Порядок елементів повинен бути однаковим.
  • Два посилання на масив є рівними, якщо вони нульові.

Перш ніж перейти до теми, спочатку розгляньте наступний приклад і вгадайте результат.

ArrayEqualsExample1.java

bourne-again shell
 public class ArrayEqualsExample1 { public static void main (String[] args) { //defining arrays to be compare int[] a1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; int[] a2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; //comparing references using == operator //works the same as a1.equals(a2) if (a1 == a2) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Вихід:

 Arrays are not equal. 

У наведеному вище прикладі a1 і a2 є двома посиланнями двох різних об’єктів. Коли ми порівнюємо дві еталонні змінні, ми отримуємо результат Масиви нерівні, при цьому обидва масиви мають однакову довжину та мають однакові елементи. Ми не отримуємо бажаного результату, оскільки оператор дорівнює (==) порівнює їх як об’єкт.

Тепер у нас є лише можливість порівняти два масиви, тобто порівняти вміст (елементи) масиву . Давайте подивимося, як порівняти вміст масиву.

Буде добре, якщо ми порівняємо елементи один за одним. Для порівняння вмісту масиву Java Масиви клас надає такі два методи для порівняння двох масивів:

подвійний в java
  • Метод equals().
  • Метод deepEquals().

Метод Arrays.equals().

Java Масиви клас забезпечує дорівнює() метод порівняння двох масивів. Він повторює кожне значення масиву та порівнює елементи за допомогою методу equals().

Синтаксис:

 public static boolean equals(int[] a1, int[] a2) 

Він аналізує два масиви a1 і a2, які потрібно порівняти. Метод повертає true, якщо масиви рівні, інакше повертає false. The Клас масивів має список перевантажених методів equals() для різних примітивних типів і один для типу Object.

чому інтерфейс маркера в java

Примітка. Використовуючи масив об’єктів, не забудьте змінити метод equals(). В іншому випадку ми отримаємо результат, повернений методом equals() класу Object.

ArrayEqualsExample2.java

 import java.util.Arrays; public class ArrayEqualsExample2 { public static void main (String[] args) { //defining array to compare int[] array1 = new int[] {'a', 'b', 'c', 'd', 'e'}; int[] array2 = new int[] {'a', 'b', 'c', 'd', 'e'}; //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Вихід:

 Arrays are equal. 

Давайте подивимося інший приклад.

ArrayEqualsExample3.java

 import java.util.Arrays; public class ArrayEqualsExample3 { public static void main (String[] args) { //defining arrays to compare int[] array1 = new int [] {21, 32, 36, 47}; int[] array2 = new int [] {11, 22, 33, 44}; int[] array3 = new int [] {21, 32, 36, 47}; System.out.println('Are array1 and array2 equal?' + Arrays.equals(array1, array2)); System.out.println('Are array1 and array3 equal?' + Arrays.equals(array1, array3)); } } 

Вихід:

ярлики linux
 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Ми бачимо, що Arrays.equals() метод порівнює елементи масиву. Тут виникає питання, що якщо масив має вкладений масив або інші посилання, які посилаються на інший об’єкт, але мають однакові значення.

Давайте зрозуміємо це на наступному прикладі.

ArrayEqualsExample4.java

 import java.util.Arrays; public class ArrayEqualsExample4 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Вихід:

коли закінчується q1
 Arrays are not equal. 

У наведеному вище прикладі ми бачимо, що метод equals() не може виконати глибоке порівняння. Щоб вирішити цю проблему, клас Java Arrays надає інший метод deepEquals(), який глибоко порівнює два масиви.

Метод Arrays.deepEquals().

Java Масиви клас надає інший метод deepEquals() щоб глибоко порівняти масив. Тут глибоке порівняння означає, що він може порівнювати два вкладені масиви довільної глибини. Два посилання на об’єкт масиву e1 і e2 глибоко рівні, якщо вони виконують будь-яку з таких умов:

  • e1=e2
  • equals(e2) повертає істину.
  • Якщо e1 і e2 є одним і тим самим примітивним типом, перевантаження методу Arrays.equals(e1, e2) повертає істину.
  • Якщо e1 і e2 є масивами типів посилань на об’єкти, метод Arrays.deepEquals(e1, e2) повертає значення true.

Синтаксис:

 public static boolean deepEquals(Object[] a1, Object[] a2) 

Метод аналізує два масиви a1 і a2, які потрібно порівняти. Він повертає true, якщо обидва масиви глибоко рівні, інакше повертає false.

Давайте створимо програму та глибоко порівняємо два масиви за допомогою deepEquals() метод класу Arrays.

ArrayEqualsExample5.java

 import java.util.Arrays; public class ArrayEqualsExample5 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.deepEquals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Вихід:

 Arrays are equal.