logo

Kā salīdzināt divus Java masīvus?

Java mēs varam salīdziniet divus masīvus salīdzinot katru masīva elementu. Java Masīvi klase nodrošina divas iepriekš definētas metodes, kuras tiek izmantotas salīdziniet divus Java masīvus .

Šajā sadaļā mēs uzzināsim kā salīdzināt divus masīvus izmantojot Arrays.equals() metode un Arrays.deepEquals() metodi. Paralēli tam mēs arī mācīsimies kā veikt dziļu salīdzinājumu starp diviem masīviem ar pareiziem piemēriem.

Divi masīvi ir vienādi, ja:

  • Tie ir viena veida.
  • Viņiem ir vienāds elementu skaits.
  • Atbilstošajiem elementu pāriem abos masīvos jābūt vienādiem.
  • Elementu secībai jābūt vienādai.
  • Divas masīva atsauces ir vienādas, ja tās ir nulles.

Pirms pāriet uz tēmu, vispirms apsveriet šo piemēru un uzminiet rezultātu.

ArrayEqualsExample1.java

gada mēnesis
 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.'); } } 

Izvade:

 Arrays are not equal. 

Iepriekš minētajā piemērā a1 un a2 ir divas atsauces uz diviem dažādiem objektiem. Salīdzinot divus atsauces mainīgos, mēs iegūstam rezultātu Masīvi nav vienādi, kamēr abi masīvi ir vienāda garuma un tiem ir vienādi elementi. Mēs nesaņemam vēlamo rezultātu, jo operators vienāds (==) salīdzina tos kā objektu.

Tagad mums ir tikai iespēja salīdzināt divus masīvus, t.i. salīdziniet masīva saturu (elementus). . Apskatīsim, kā salīdzināt masīva saturu.

Būs labi, ja salīdzināsim elementus pa vienam. Lai salīdzinātu masīva saturu Java Masīvi klase nodrošina šādas divas metodes, lai salīdzinātu divus masīvus:

arp komandu
  • vienāds() metode
  • deepEquals() metode

Masīvi.equals() Metode

Java Masīvi klase nodrošina vienāds () metode divu masīvu salīdzināšanai. Tas atkārto katru masīva vērtību un salīdzina elementus, izmantojot vienāds() metodi.

Sintakse:

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

Tas parsē divus masīvus a1 un a2, kas ir jāsalīdzina. Metode atgriež patiesu, ja masīvi ir vienādi, pretējā gadījumā atgriež false. The Masīvu klase ir saraksts ar overloaded equals() metodi dažādiem primitīvajiem tipiem un viena objekta tipam.

Piezīme. Izmantojot objektu masīvu, neaizmirstiet ignorēt vienāds() metodi. Pretējā gadījumā mēs saņemsim izvadi, kas tiek atgriezta ar Object klases metodi 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.'); } } 

Izvade:

 Arrays are equal. 

Apskatīsim citu piemēru.

arraylist.sort

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

Izvade:

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

Mēs redzam, ka Arrays.equals() metode salīdzina masīva elementus. Šeit rodas jautājums, kā rīkoties, ja masīvā ir ligzdots masīvs vai citas atsauces, kas attiecas uz citu objektu, bet kurām ir vienādas vērtības.

Sapratīsim to, izmantojot šādu piemēru.

ArrayEqualsExample4.java

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

Izvade:

 Arrays are not equal. 

Iepriekš minētajā piemērā redzams, ka metode equals() nespēj veikt dziļu salīdzinājumu. Lai atrisinātu šo problēmu, Java Arrays klase nodrošina citu metodi deepEquals(), kas padziļināti salīdzina abus masīvus.

Masīvi.deepEquals() Metode

Java Masīvi klase nodrošina citu metodi deepEquals() lai dziļi salīdzinātu masīvu. Šeit dziļa salīdzināšana nozīmē, ka tā var salīdzināt divus ligzdotus patvaļīga dziļuma masīvus. Divu masīvu objektu atsauce e1 un e2 ir dziļi vienādi, ja tiem ir kāds no šiem nosacījumiem:

  • e1=e2
  • vienāds(e2) atgriež patiesu.
  • Ja e1 un e2 ir viens un tas pats primitīvais tips, metodes Arrays.equals(e1, e2) pārslodze atgriež patieso vērtību.
  • Ja e1 un e2 abi ir objektu atsauces tipu masīvi, metode Arrays.deepEquals(e1, e2) atgriež patieso vērtību.

Sintakse:

str.replace valodā java
 public static boolean deepEquals(Object[] a1, Object[] a2) 

Metode parsē divus masīvus a1 un a2, kas ir jāsalīdzina. Tas atgriež patiesu, ja abi masīvi ir dziļi vienādi, pretējā gadījumā atgriež false.

Izveidosim programmu un padziļināti salīdzināsim divus masīvus, izmantojot deepEquals() Arrays klases metode.

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

Izvade:

 Arrays are equal.