logo

Hvordan sammenligner man to arrays i Java?

I Java kan vi sammenligne to arrays ved at sammenligne hvert element i arrayet. Java Arrays klasse giver to foruddefinerede metoder, der bruges til sammenligne to arrays i Java .

I dette afsnit vil vi lære hvordan man sammenligner to arrays ved brug af Arrays.equals() metode og Arrays.deepEquals() metode. Sammen med dette vil vi også lære hvordan man udfører en dyb sammenligning mellem de to arrays med rigtige eksempler.

To arrays er ens, hvis:

  • De er af samme type.
  • De har lige mange elementer.
  • Tilsvarende par af elementer i begge arrays skal være ens.
  • Rækkefølgen af ​​elementer skal være den samme.
  • To matrixreferencer er ens, hvis de er nul.

Inden du går videre til emnet, skal du først overveje følgende eksempel og gætte resultatet.

ArrayEqualsExample1.java

byte array til streng
 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.'); } } 

Produktion:

 Arrays are not equal. 

I ovenstående eksempel er a1 og a2 de to referencer til to forskellige objekter. Når vi sammenligner to referencevariable, får vi output Arrays er ikke ens, mens begge arrays er lige lange og har de samme elementer. Vi får ikke det ønskede output, fordi lige (==) operatoren sammenligner dem som et objekt.

Nu har vi kun en mulighed for at sammenligne to arrays, dvs. sammenligne indholdet (elementerne) af arrayet . Lad os se, hvordan man sammenligner matrixindhold.

Det vil være godt, hvis vi sammenligner elementerne én efter én. For at sammenligne indholdet af Java-arrayet Arrays klasse giver følgende to metoder til at sammenligne to arrays:

arp en kommando
  • equals() Metode
  • deepEquals() metode

Arrays.equals() metode

Java Arrays klasse giver lige med() metode til at sammenligne to arrays. Den itererer over hver værdi af et array og sammenligner elementerne ved hjælp af equals()-metoden.

Syntaks:

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

Den analyserer to arrays a1 og a2, der skal sammenlignes. Metoden returnerer sand, hvis arrays er ens, ellers returnerer false. Det Arrays klasse har en liste over overbelastet equals()-metode for forskellige primitive typer og en for en objekttype.

mysql oprette bruger

Bemærk: Mens du bruger arrayet af objekter, glem ikke at tilsidesætte equals()-metoden. Ellers vil vi få output returneret af equals()-metoden i Object-klassen.

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

Produktion:

 Arrays are equal. 

Lad os se et andet eksempel.

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

Produktion:

hvor meget vejer kat timpf
 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Vi ser, at Arrays.equals() metoden sammenligner elementerne i arrayet. Her opstår et spørgsmål om, hvad hvis et array har indlejret array eller nogle andre referencer, som refererer til forskellige objekter, men har de samme værdier.

Lad os forstå det gennem følgende eksempel.

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

Produktion:

midterknap i css
 Arrays are not equal. 

I ovenstående eksempel ser vi, at metoden equals() ikke er i stand til at udføre en dyb sammenligning. For at løse dette problem giver Java Arrays-klassen en anden metode deepEquals(), der sammenligner de to arrays dybt.

Arrays.deepEquals() metode

Java Arrays klasse giver en anden metode deepEquals() at sammenligne rækken dybt. Her betyder dyb sammenligning, at den kan sammenligne to indlejrede arrays med vilkårlig dybde. To arrays objektreference e1 og e2 er dybt ens, hvis de har en af ​​følgende betingelse:

  • e1=e2
  • er lig med(e2) returnerer sand.
  • Hvis e1 og e2 begge er den samme primitive type, returnerer overbelastningen af ​​metoden Arrays.equals(e1, e2) sand.
  • Hvis e1 og e2 begge er arrays af objektreferencetyper, returnerer metoden Arrays.deepEquals(e1, e2) sand.

Syntaks:

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

Metoden analyserer de to arrays a1 og a2, der skal sammenlignes. Det returnerer sandt, hvis begge arrays er dybt ens, ellers returnerer falsk.

Lad os oprette et program og dybt sammenligne to arrays ved hjælp af deepEquals() metoden i klassen 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.'); } } 

Produktion:

 Arrays are equal.