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.