logo

Hogyan hasonlítsunk össze két tömböt Java-ban?

Java nyelven megtehetjük hasonlítson össze két tömböt a tömb egyes elemeinek összehasonlításával. Jáva Tömbök osztály két előre definiált metódust biztosít hasonlítson össze két Java tömböt .

Ebben a részben megtanuljuk hogyan hasonlítsunk össze két tömböt segítségével Arrays.equals() módszer és Arrays.deepEquals() módszer. Ezzel együtt tanulni is fogunk hogyan végezzünk mély összehasonlítást a két tömb között megfelelő példákkal.

Két tömb egyenlő, ha:

  • Azonos típusúak.
  • Egyenlő számú elemük van.
  • Mindkét tömbben a megfelelő elempároknak egyenlőnek kell lenniük.
  • Az elemek sorrendjének azonosnak kell lennie.
  • Két tömbhivatkozás egyenlő, ha nulla.

Mielőtt a témára térne, először vegye figyelembe a következő példát, és tippelje meg a kimenetet.

ArrayEqualsExample1.java

kupac rendezés
 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.'); } } 

Kimenet:

 Arrays are not equal. 

A fenti példában az a1 és a2 két különböző objektum két referenciája. Ha összehasonlítunk két referenciaváltozót, megkapjuk a kimenetet A tömbök nem egyenlőek, míg mindkét tömb azonos hosszúságú és azonos elemekkel rendelkezik. Nem kapjuk meg a kívánt kimenetet, mert az egyenlő (==) operátor objektumként hasonlítja össze őket.

Most már csak két tömb összehasonlítására van lehetőségünk, pl. hasonlítsa össze a tömb tartalmát (elemeit). . Nézzük meg, hogyan lehet összehasonlítani a tömb tartalmát.

Jó lesz, ha egyenként hasonlítjuk össze az elemeket. A Java tömb tartalmának összehasonlítása Tömbök osztály a következő két módszert kínálja két tömb összehasonlításához:

q1 q2 q3 q4
  • egyenlő() Metódus
  • deepEquals() módszer

Arrays.equals() Method

Jáva Tömbök osztály biztosítja a egyenlő () módszer két tömb összehasonlítására. Egy tömb minden értéke felett iterál, és az equals() metódussal összehasonlítja az elemeket.

Szintaxis:

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

Elemez két a1 és a2 tömböt, amelyeket összehasonlítani kell. A metódus igazat ad vissza, ha a tömbök egyenlőek, egyébként hamis értéket ad vissza. A Arrays osztály tartalmaz egy listát a túlterhelt equals() metódusokról a különböző primitív típusokhoz és egy az objektumtípusokhoz.

Megjegyzés: Az objektumok tömbjének használata közben ne felejtse el felülírni az equals() metódust. Ellenkező esetben a kimenetet az Object osztály equals() metódusa adja vissza.

ArrayEqualsExample2.java

string konvertálni int-re java-ban
 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.'); } } 

Kimenet:

 Arrays are equal. 

Lássunk egy másik példát.

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

Kimenet:

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

Látjuk, hogy a Arrays.equals() metódus összehasonlítja a tömb elemeit. Itt felmerül a kérdés, hogy mi van akkor, ha egy tömbnek van beágyazott tömbje vagy más hivatkozások, amelyek más objektumra hivatkoznak, de ugyanazok az értékek.

css igazító képek

Értsük meg a következő példán keresztül.

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

Kimenet:

 Arrays are not equal. 

A fenti példában azt látjuk, hogy az equals() metódus nem képes mély összehasonlításra. A probléma megoldására a Java Arrays osztály egy másik deepEquals() metódust biztosít, amely mélyen összehasonlítja a két tömböt.

karakterlánc a char java-hoz

Arrays.deepEquals() metódus

Jáva Tömbök osztály egy másik módszert biztosít deepEquals() a tömb mélyreható összehasonlításához. Itt a mély összehasonlítás azt jelenti, hogy két tetszőleges mélységű egymásba ágyazott tömböt tud összehasonlítani. Két tömb objektumhivatkozása e1 és e2 mélyen egyenlő, ha az alábbi feltételek bármelyikét teljesítik:

  • e1=e2
  • egyenlő(e2) értéke igaz.
  • Ha e1 és e2 ugyanaz a primitív típus, akkor az Arrays.equals(e1, e2) metódus túlterhelése igaz értéket ad vissza.
  • Ha e1 és e2 is objektumhivatkozási típusok tömbje, az Arrays.deepEquals(e1, e2) metódus igaz értéket ad vissza.

Szintaxis:

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

A metódus elemzi a két a1 és a2 tömböt, vagyis összehasonlítja. Igazat ad vissza, ha mindkét tömb mélyen egyenlő, egyébként hamis értéket ad vissza.

Hozzon létre egy programot, és mélyen hasonlítson össze két tömböt a deepEquals() az Arrays osztály metódusa.

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

Kimenet:

 Arrays are equal.