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.