logo

Wie vergleiche ich zwei Arrays in Java?

In Java ist das möglich Vergleichen Sie zwei Arrays durch Vergleichen jedes Elements des Arrays. Java Arrays Die Klasse bietet zwei vordefinierte Methoden, die dazu verwendet werden Vergleichen Sie zwei Arrays in Java .

In diesem Abschnitt werden wir lernen wie man zwei Arrays vergleicht verwenden Arrays.equals() Methode und Arrays.deepEquals() Methode. Daneben werden wir auch lernen wie man einen umfassenden Vergleich zwischen den beiden Arrays durchführt mit passenden Beispielen.

Zwei Arrays sind gleich, wenn:

  • Sie sind vom gleichen Typ.
  • Sie haben die gleiche Anzahl an Elementen.
  • Entsprechende Elementpaare in beiden Arrays müssen gleich sein.
  • Die Reihenfolge der Elemente muss gleich sein.
  • Zwei Array-Referenzen sind gleich, wenn sie null sind.

Bevor Sie zum Thema übergehen, betrachten Sie zunächst das folgende Beispiel und erraten Sie die Ausgabe.

ArrayEqualsExample1.java

Beispiel einer Java-Klasse
 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.'); } } 

Ausgabe:

 Arrays are not equal. 

Im obigen Beispiel sind a1 und a2 die beiden Referenzen zweier verschiedener Objekte. Wenn wir zwei Referenzvariablen vergleichen, erhalten wir die Ausgabe Arrays sind nicht gleich, während beide Arrays gleich lang sind und die gleichen Elemente haben. Wir erhalten nicht die gewünschte Ausgabe, da der Gleichheitsoperator (==) sie als Objekt vergleicht.

Jetzt haben wir nur noch die Möglichkeit, zwei Arrays zu vergleichen, d. h. Vergleichen Sie den Inhalt (die Elemente) des Arrays . Sehen wir uns an, wie man Array-Inhalte vergleicht.

Es wäre gut, wenn wir die Elemente einzeln vergleichen würden. Um den Inhalt des Arrays Java zu vergleichen Arrays Die Klasse bietet die folgenden zwei Methoden zum Vergleichen zweier Arrays:

q1 q2 q3 q4
  • equal() Methode
  • deepEquals()-Methode

Arrays.equals()-Methode

Java Arrays Klasse bietet die gleich() Methode zum Vergleichen zweier Arrays. Es durchläuft jeden Wert eines Arrays und vergleicht die Elemente mit der Methode equal().

Syntax:

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

Es analysiert zwei Arrays a1 und a2, die verglichen werden sollen. Die Methode gibt „true“ zurück, wenn Arrays gleich sind, andernfalls gibt sie „false“ zurück. Der Arrays-Klasse verfügt über eine Liste überladener equal()-Methoden für verschiedene Grundtypen und eine für einen Objekttyp.

Hinweis: Vergessen Sie bei der Verwendung des Objektarrays nicht, die Methode equal() zu überschreiben. Andernfalls erhalten wir die Ausgabe, die von der Methode equal() der Klasse Object zurückgegeben wird.

ArrayEqualsExample2.java

Microservices-Tutorial
 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.'); } } 

Ausgabe:

 Arrays are equal. 

Sehen wir uns ein weiteres Beispiel an.

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)); } } 

Ausgabe:

 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Wir sehen, dass die Arrays.equals() Die Methode vergleicht die Elemente des Arrays. Hier stellt sich die Frage, was passiert, wenn ein Array über ein verschachteltes Array oder andere Referenzen verfügt, die auf ein anderes Objekt verweisen, aber dieselben Werte haben?

Algorithmus für BFS

Lassen Sie es uns anhand des folgenden Beispiels verstehen.

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.'); } } 

Ausgabe:

 Arrays are not equal. 

Im obigen Beispiel sehen wir, dass die Methode equal() keinen tiefen Vergleich durchführen kann. Um dieses Problem zu lösen, stellt die Java-Arrays-Klasse eine weitere Methode deepEquals() bereit, die die beiden Arrays gründlich vergleicht.

sdlc

Arrays.deepEquals()-Methode

Java Arrays Die Klasse stellt eine weitere Methode bereit deepEquals() um das Array gründlich zu vergleichen. Tief vergleichen bedeutet hier, dass zwei verschachtelte Arrays beliebiger Tiefe verglichen werden können. Zwei Array-Objektreferenzen e1 und e2 sind zutiefst gleich, wenn sie eine der folgenden Bedingungen erfüllen:

  • e1=e2
  • equal(e2) gibt true zurück.
  • Wenn e1 und e2 beide vom gleichen primitiven Typ sind, gibt die Überladung der Methode Arrays.equals(e1, e2) „true“ zurück.
  • Wenn e1 und e2 beide Arrays von Objektreferenztypen sind, gibt die Methode Arrays.deepEquals(e1, e2) „true“ zurück.

Syntax:

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

Die Methode analysiert die beiden zu vergleichenden Arrays a1 und a2. Es gibt „true“ zurück, wenn beide Arrays völlig gleich sind, andernfalls wird „false“ zurückgegeben.

Lassen Sie uns ein Programm erstellen und zwei Arrays mithilfe von eingehend vergleichen deepEquals() Methode der Arrays-Klasse.

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.'); } } 

Ausgabe:

 Arrays are equal.