logo

Kaip palyginti du „Java“ masyvus?

Java, mes galime palyginkite du matricas lyginant kiekvieną masyvo elementą. Java Masyvai klasė suteikia du iš anksto nustatytus metodus, kurie yra naudojami palyginkite du „Java“ masyvus .

Šiame skyriuje mes išmoksime kaip palyginti du masyvus naudojant Arrays.equals() metodas ir Arrays.deepEquals() metodas. Be to, mes taip pat mokysimės kaip atlikti išsamų dviejų masyvų palyginimą su tinkamais pavyzdžiais.

Du masyvai yra lygūs, jei:

  • Jie yra to paties tipo.
  • Jie turi vienodą elementų skaičių.
  • Atitinkamos elementų poros abiejuose masyvuose turi būti lygios.
  • Elementų tvarka turi būti vienoda.
  • Dvi masyvo nuorodos yra lygios, jei jos yra nulinės.

Prieš pereidami prie temos, pirmiausia apsvarstykite šį pavyzdį ir atspėkite rezultatą.

ArrayEqualsExample1.java

šaukštelio dydžio
 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.'); } } 

Išvestis:

 Arrays are not equal. 

Aukščiau pateiktame pavyzdyje a1 ir a2 yra dvi nuorodos į du skirtingus objektus. Kai lyginame du atskaitos kintamuosius, gauname išvestį Masyvai nėra lygūs, tuo tarpu abu masyvai yra vienodo ilgio ir turi tuos pačius elementus. Mes negauname norimos išvesties, nes operatorius lygu (==) lygina juos kaip objektą.

Dabar turime tik galimybę palyginti du masyvus, t.y. palyginkite masyvo turinį (elementus). . Pažiūrėkime, kaip palyginti masyvo turinį.

Bus gerai, jei palyginsime elementus po vieną. Palyginti masyvo Java turinį Masyvai klasėje pateikiami du būdai, kaip palyginti du masyvus:

masyvas.iš java
  • equals() Metodas
  • deepEquals() metodas

Masyvai.equals() Metodas

Java Masyvai klasė suteikia lygus () dviejų masyvų palyginimo metodas. Jis kartoja kiekvieną masyvo reikšmę ir lygina elementus naudodamas equals () metodą.

Sintaksė:

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

Jis analizuoja du lyginamuosius masyvus a1 ir a2. Metodas grąžina teisingą, jei masyvai yra lygūs, kitu atveju grąžina false. The Masyvų klasė turi perkrautų lygių () metodų sąrašą skirtingiems primityviems tipams ir vieną objekto tipui.

Pastaba: naudodami objektų masyvą, nepamirškite nepaisyti lygybės() metodo. Priešingu atveju išvestį gausime naudojant Object klasės metodą equals ().

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

Išvestis:

kokie mano kompiuterio ekrano matmenys
 Arrays are equal. 

Pažiūrėkime kitą pavyzdį.

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

Išvestis:

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

Matome, kad Arrays.equals() metodas lygina masyvo elementus. Čia kyla klausimas, ką daryti, jei masyve yra įdėtas masyvas arba kitos nuorodos, kurios nurodo skirtingą objektą, bet turi tas pačias reikšmes.

Supraskime tai per šį pavyzdį.

vaizdų suderinimas css

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

Išvestis:

 Arrays are not equal. 

Aukščiau pateiktame pavyzdyje matome, kad lygis() metodas negali atlikti gilaus palyginimo. Norėdami išspręsti šią problemą, „Java Arrays“ klasė pateikia kitą metodą deepEquals(), kuris nuodugniai palygina du masyvus.

Masyvai.deepEquals() Metodas

Java Masyvai klasė suteikia kitą metodą deepEquals () giliai palyginti masyvą. Čia gilus palyginimas reiškia, kad galima palyginti du įdėtus savavališko gylio matricas. Dviejų masyvų objektų nuorodos e1 ir e2 yra visiškai vienodi, jei jie atitinka bet kurią iš šių sąlygų:

java vartotojo įvestis
  • e1=e2
  • lygus(e2) grąžina true.
  • Jei e1 ir e2 yra to paties primityvaus tipo, metodo Arrays.equals(e1, e2) perkrova grąžina true.
  • Jei e1 ir e2 yra objektų nuorodų tipų masyvai, metodas Arrays.deepEquals(e1, e2) grąžina true.

Sintaksė:

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

Metodas analizuoja du masyvus a1 ir a2, o tai yra palyginimas. Jis grąžina teisingą, jei abu masyvai yra visiškai vienodi, kitu atveju grąžina false.

Sukurkime programą ir nuodugniai palyginkime du masyvus naudodami deepEquals () Arrays klasės metodas.

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

Išvestis:

 Arrays are equal.