logo

Hvordan sammenligne to matriser i Java?

I Java kan vi sammenligne to arrays ved å sammenligne hvert element i matrisen. Java Matriser klasse gir to forhåndsdefinerte metoder som brukes til sammenligne to arrays i Java .

I denne delen vil vi lære hvordan sammenligne to matriser ved hjelp av Arrays.equals() metode og Arrays.deepEquals() metode. Sammen med dette vil vi også lære hvordan du utfører en dyp sammenligning mellom de to matrisene med riktige eksempler.

To matriser er like hvis:

  • De er av samme type.
  • De har like mange elementer.
  • Tilsvarende par av elementer i begge arrays må være like.
  • Rekkefølgen på elementene må være den samme.
  • To matrisereferanser er like hvis de er null.

Før du går til emnet, bør du først vurdere følgende eksempel og gjett 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.'); } } 

Produksjon:

 Arrays are not equal. 

I eksemplet ovenfor er a1 og a2 de to referansene til to forskjellige objekter. Når vi sammenligner to referansevariabler, får vi utdata Arrays er ikke like, mens begge matrisene er like lange og har de samme elementene. Vi får ikke ønsket utgang fordi lik (==)-operatoren sammenligner dem som et objekt.

Nå har vi bare et alternativ til å sammenligne to matriser, dvs. sammenligne innholdet (elementene) i matrisen . La oss se hvordan du sammenligner matriseinnhold.

Det vil være bra om vi sammenligner elementene en etter en. For å sammenligne innholdet i arrayen Java Matriser klasse gir følgende to metoder for å sammenligne to matriser:

ulv mot rev
  • lik() Metode
  • deepEquals() metode

Arrays.equals() metode

Java Matriser klasse gir er lik() metode for å sammenligne to matriser. Den itererer over hver verdi i en matrise og sammenligner elementene ved å bruke equals()-metoden.

Syntaks:

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

Den analyserer to arrays a1 og a2 som skal sammenlignes. Metoden returnerer true hvis arrays er like, ellers returnerer false. De Arrays klasse har en liste over overbelastet equals()-metode for forskjellige primitive typer og en for en objekttype.

burak ozcivit

Merk: Mens du bruker arrayen av objekter, ikke glem å overstyre equals()-metoden. Ellers vil vi få utdataene returnert av equals()-metoden til 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.'); } } 

Produksjon:

 Arrays are equal. 

La oss se et annet 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)); } } 

Produksjon:

gimp-fontliste
 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Vi ser at Arrays.equals() metoden sammenligner elementene i matrisen. Her oppstår et spørsmål om at hva om en matrise har nestet matrise eller noen andre referanser som refererer til et annet objekt, men som har samme verdier.

La oss forstå det gjennom 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.'); } } 

Produksjon:

typescript pilfunksjon
 Arrays are not equal. 

I eksemplet ovenfor ser vi at equals()-metoden ikke er i stand til å utføre en dyp sammenligning. For å løse dette problemet gir Java Arrays-klassen en annen metode deepEquals() som sammenligner de to matrisene dypt.

Arrays.deepEquals()-metoden

Java Matriser klasse gir en annen metode deepEquals() å sammenligne matrisen dypt. Her betyr dyp sammenligning at den kan sammenligne to nestede arrays med vilkårlig dybde. To matriser objektreferanse e1 og e2 er dypt like hvis de har en av følgende betingelse:

  • e1=e2
  • lik(e2) returnerer sann.
  • Hvis e1 og e2 begge er den samme primitive typen, returnerer overbelastningen av metoden Arrays.equals(e1, e2) sann.
  • Hvis e1 og e2 begge er matriser av objektreferansetyper, returnerer metoden Arrays.deepEquals(e1, e2) sann.

Syntaks:

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

Metoden analyserer de to matrisene a1 og a2 som skal sammenlignes. Den returnerer sann hvis begge matrisene er dypt like, ellers returnerer den falsk.

La oss lage et program og sammenligne to arrays dypt ved å bruke deepEquals() metoden til Arrays-klassen.

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

Produksjon:

 Arrays are equal.