logo

Come confrontare due array in Java?

In Java, possiamo confrontare due array confrontando ogni elemento dell'array. Giava Array La classe fornisce due metodi predefiniti a cui viene utilizzata confrontare due array in Java .

In questa sezione impareremo come confrontare due array utilizzando Array.equals() metodo e Array.deepEquals() metodo. Insieme a questo, impareremo anche come eseguire un confronto approfondito tra i due array con esempi adeguati.

Due array sono uguali se:

  • Sono dello stesso tipo.
  • Hanno lo stesso numero di elementi.
  • Le coppie corrispondenti di elementi in entrambi gli array devono essere uguali.
  • L'ordine degli elementi deve essere lo stesso.
  • Due riferimenti ad array sono uguali se sono nulli.

Prima di passare all'argomento, considera innanzitutto il seguente esempio e indovina l'output.

ArrayEqualsEsempio1.java

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

Produzione:

 Arrays are not equal. 

Nell'esempio sopra, a1 e a2 sono i due riferimenti di due oggetti diversi. Quando confrontiamo due variabili di riferimento, otteniamo l'output Gli array non sono uguali, mentre entrambi gli array hanno la stessa lunghezza e hanno gli stessi elementi. Non otteniamo l'output desiderato perché l'operatore uguale (==) li confronta come un oggetto.

Ora abbiamo solo la possibilità di confrontare due array, ad es. confrontare il contenuto (elementi) dell'array . Vediamo come confrontare il contenuto dell'array.

Sarebbe utile confrontare gli elementi uno per uno. Per confrontare il contenuto dell'array Java Array La classe fornisce i due metodi seguenti per confrontare due array:

q1 q2 q3 q4
  • metodo equals()
  • metodo deepEquals()

Metodo Arrays.equals()

Giava Array la classe fornisce il file equivale() metodo per confrontare due array. Itera su ciascun valore di un array e confronta gli elementi utilizzando il metodo equals().

Sintassi:

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

Analizza due array a1 e a2 da confrontare. Il metodo restituisce true se gli array sono uguali, altrimenti restituisce false. IL Classe degli array ha un elenco di metodi equals() sovraccaricati per diversi tipi primitivi e uno per un tipo Object.

prova catch block in Java

Nota: durante l'utilizzo dell'array di oggetti, non dimenticare di sovrascrivere il metodo equals(). Altrimenti otterremo l'output restituito dal metodo equals() della classe Object.

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

Produzione:

 Arrays are equal. 

Vediamo un altro esempio.

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

Produzione:

leggere i file json
 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Vediamo che il Array.equals() Il metodo confronta gli elementi dell'array. Qui sorge la domanda: cosa succede se un array ha un array annidato o altri riferimenti che si riferiscono a oggetti diversi ma hanno gli stessi valori.

Capiamolo attraverso il seguente esempio.

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

Produzione:

albero binario java
 Arrays are not equal. 

Nell'esempio sopra, vediamo che il metodo equals() non è in grado di eseguire un confronto approfondito. Per risolvere questo problema, la classe Java Arrays fornisce un altro metodo deepEquals() che confronta in modo approfondito i due array.

Metodo Arrays.deepEquals()

Giava Array class fornisce un altro metodo profondoUguale() per confrontare in modo approfondito l'array. In questo caso, confrontare in profondità significa che è possibile confrontare due array nidificati di profondità arbitraria. Due riferimenti agli oggetti array e1 ed e2 sono profondamente uguali se soddisfano una delle seguenti condizioni:

  • e1=e2
  • uguale(e2) restituisce vero.
  • Se e1 ed e2 sono entrambi dello stesso tipo primitivo, l'overload del metodo Arrays.equals(e1, e2) restituisce true.
  • Se e1 ed e2 sono entrambi array di tipi di riferimento a oggetti, il metodo Arrays.deepEquals(e1, e2) restituisce true.

Sintassi:

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

Il metodo analizza i due array a1 e a2 che deve confrontare. Restituisce vero se entrambi gli array sono profondamente uguali, altrimenti restituisce falso.

Creiamo un programma e confrontiamo profondamente due array utilizzando il file profondoUguale() metodo della classe Arrays.

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

Produzione:

 Arrays are equal.