logo

Cum se compară două matrice în Java?

În Java, putem compara două matrice prin compararea fiecărui element al matricei. Java Matrice clasa furnizează două metode predefinite care sunt folosite pentru compara două matrice în Java .

În această secțiune, vom învăța cum se compară două matrice folosind Arrays.equals() metoda si Arrays.deepEquals() metodă. Odată cu aceasta, vom învăța și noi cum să efectuați o comparație profundă între cele două matrice cu exemple potrivite.

Două matrice sunt egale dacă:

  • Sunt de același tip.
  • Au un număr egal de elemente.
  • Perechile corespunzătoare de elemente din ambele matrice trebuie să fie egale.
  • Ordinea elementelor trebuie să fie aceeași.
  • Două referințe de matrice sunt egale dacă sunt nule.

Înainte de a trece la subiect, luați în considerare următorul exemplu și ghiciți rezultatul.

ArrayEqualsExample1.java

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

Ieșire:

 Arrays are not equal. 

În exemplul de mai sus, a1 și a2 sunt cele două referințe ale două obiecte diferite. Când comparăm două variabile de referință, obținem rezultatul Matricele nu sunt egale, în timp ce ambele matrice sunt de lungime egală și au aceleași elemente. Nu obținem rezultatul dorit deoarece operatorul equals (==) le compară ca obiect.

Acum, avem doar o opțiune de a compara două matrice, de exemplu. comparați conținutul (elementele) matricei . Să vedem cum să comparăm conținutul matricei.

Va fi bine dacă comparăm elementele unul câte unul. Pentru a compara conținutul matricei Java Matrice clasa oferă următoarele două metode pentru a compara două matrice:

char la șir
  • equals() Metoda
  • deepEquals() Metoda

Arrays.equals() Metoda

Java Matrice clasa oferă este egal() metoda de a compara două matrice. Iterează peste fiecare valoare a unui tablou și compară elementele folosind metoda equals().

Sintaxă:

ipconfig gratuit pentru Linux
 public static boolean equals(int[] a1, int[] a2) 

Analizează două tablouri a1 și a2 care urmează să fie comparate. Metoda returnează true dacă tablourile sunt egale, altfel returnează false. The Clasa Arrays are o listă de metode equals() supraîncărcate pentru diferite tipuri primitive și una pentru un tip de obiect.

Notă: În timp ce utilizați matricea de obiecte, nu uitați să înlocuiți metoda equals(). În caz contrar, vom obține rezultatul returnat de metoda equals() a clasei 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.'); } } 

Ieșire:

 Arrays are equal. 

Să vedem un alt exemplu.

ArrayEqualsExample3.java

prime fără cod în 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)); } } 

Ieșire:

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

Vedem că Arrays.equals() metoda compară elementele tabloului. Aici, apare o întrebare care se întâmplă dacă o matrice are o matrice imbricată sau alte referințe care se referă la obiecte diferite, dar au aceleași valori.

Să-l înțelegem prin următorul exemplu.

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

Ieșire:

 Arrays are not equal. 

În exemplul de mai sus, vedem că metoda equals() nu este capabilă să efectueze o comparație profundă. Pentru a rezolva această problemă, clasa Java Arrays oferă o altă metodă deepEquals() care compară profund cele două matrice.

Metoda Arrays.deepEquals().

Java Matrice clasa oferă o altă metodă deepEquals() pentru a compara în profunzime matricea. Aici, compara profund înseamnă că poate compara două matrice imbricate de adâncime arbitrară. Două matrice obiect de referință e1 și e2 sunt profund egale dacă îndeplinesc oricare dintre următoarele condiții:

  • e1=e2
  • equals(e2) returnează adevărat.
  • Dacă e1 și e2 sunt ambele de același tip primitiv, supraîncărcarea metodei Arrays.equals(e1, e2) returnează true.
  • Dacă e1 și e2 sunt ambele tablouri de tipuri de referință de obiect, metoda Arrays.deepEquals(e1, e2) returnează true.

Sintaxă:

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

Metoda parsează cele două tablouri a1 și a2 care trebuie comparate. Returnează adevărat dacă ambele matrice sunt profund egale, altfel returnează false.

c șir formatat

Să creăm un program și să comparăm în profunzime două matrice folosind deepEquals() metoda clasei 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.'); } } 

Ieșire:

 Arrays are equal.