logo

Kako usporediti dva polja u Javi?

U Javi možemo usporedi dva niza usporedbom svakog elementa niza. Java Nizovi klasa nudi dvije unaprijed definirane metode koje se koriste za usporedi dva niza u Javi .

U ovom odjeljku naučit ćemo kako usporediti dva polja korištenjem Arrays.equals() metoda i Arrays.deepEquals() metoda. Uz to ćemo i učiti kako izvršiti duboku usporedbu između dva niza s pravilnim primjerima.

Dva niza su jednaka ako:

  • Oni su iste vrste.
  • Imaju jednak broj elemenata.
  • Odgovarajući parovi elemenata u oba niza moraju biti jednaki.
  • Redoslijed elemenata mora biti isti.
  • Dvije reference niza su jednake ako su null.

Prije nego prijeđete na temu, prvo razmotrite sljedeći primjer i pogodite rezultat.

ArrayEqualsExample1.java

što je hibernacija
 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.'); } } 

Izlaz:

 Arrays are not equal. 

U gornjem primjeru, a1 i a2 su dvije reference dva različita objekta. Kada usporedimo dvije referentne varijable, dobivamo izlaz Nizovi nisu jednaki, dok su oba niza jednake duljine i imaju iste elemente. Ne dobivamo željeni izlaz jer ih operator jednakosti (==) uspoređuje kao objekt.

Sada imamo samo opciju usporedbe dva niza, tj. usporediti sadržaj (elemente) niza . Pogledajmo kako usporediti sadržaj polja.

Bit će dobro ako usporedimo elemente jedan po jedan. Za usporedbu sadržaja niza Java Nizovi klasa pruža sljedeće dvije metode za usporedbu dva niza:

dvostruko u Javi
  • jednako() Metoda
  • metoda deepEquals().

Arrays.equals() Metoda

Java Nizovi klasa pruža jednako() metoda za usporedbu dva niza. Iterira svaku vrijednost niza i uspoređuje elemente pomoću metode equals().

Sintaksa:

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

Raščlanjuje dva niza a1 i a2 koji se uspoređuju. Metoda vraća true ako su nizovi jednaki, inače vraća false. The Klasa nizova ima popis preopterećene metode equals() za različite primitivne tipove i jednu za tip objekta.

Napomena: Dok koristite polje objekata, ne zaboravite nadjačati metodu equals(). U suprotnom, dobit ćemo izlaz koji vraća metoda equals() klase 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.'); } } 

Izlaz:

 Arrays are equal. 

Pogledajmo još jedan primjer.

stvaranje skripte ljuske izvršnom

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

Izlaz:

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

Vidimo da je Arrays.equals() metoda uspoređuje elemente niza. Ovdje se postavlja pitanje što ako niz ima ugniježđeni niz ili neke druge reference koje se odnose na različite objekte, ali imaju iste vrijednosti.

Shvatimo to kroz sljedeći primjer.

ArrayEqualsExample4.java

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

Izlaz:

 Arrays are not equal. 

U gornjem primjeru vidimo da metoda equals() ne može izvršiti duboku usporedbu. Da bi se riješio ovaj problem, klasa Java Arrays pruža drugu metodu deepEquals() koja duboko uspoređuje dva polja.

Metoda Arrays.deepEquals().

Java Nizovi klasa pruža drugu metodu dubokoJednako() duboko usporediti niz. Ovdje duboka usporedba znači da može usporediti dva ugniježđena niza proizvoljne dubine. Dvije reference objekta niza e1 i e2 duboko su jednake ako ispunjavaju bilo koji od sljedećih uvjeta:

  • e1=e2
  • jednako(e2) vraća istinito.
  • Ako su e1 i e2 isti primitivni tip, preopterećenje metode Arrays.equals(e1, e2) vraća true.
  • Ako su e1 i e2 oba polja tipova reference objekta, metoda Arrays.deepEquals(e1, e2) vraća true.

Sintaksa:

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

Metoda analizira dva niza a1 i a2 koja se uspoređuju. Vraća true ako su oba niza duboko jednaka, inače vraća false.

Kreirajmo program i dubinski usporedimo dva polja pomoću dubokoJednako() metoda klase 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.'); } } 

Izlaz:

 Arrays are equal.