Arrays.equals în Java

Compară două array-uri după conținut: true dacă au aceeași lungime și aceleași elemente pe aceleași poziții.

Sintaxă
static boolean equals(int[] a, int[] b)        // și pentru celelalte tipuri
static boolean equals(Object[] a, Object[] b)
static boolean deepEquals(Object[] a, Object[] b)

Ce face Arrays.equals

a == b și a.equals(b) verifică doar dacă este același array. Arrays.equals(a, b) compară conținutul: aceeași lungime și elemente egale pe fiecare poziție (obiectele cu equals). Două valori null sunt considerate egale.

Pentru matrice (int[][]), equals compară rândurile ca obiecte, deci dă de obicei false. Folosește Arrays.deepEquals, care compară și în interiorul rândurilor.

Parametri

Parametru Descriere
a, b Array-urile comparate.

Ce returnează

true dacă au același conținut.

Exemple

Exemplul 1: Răspunsurile elevului față de barem

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        char[] barem = {'a', 'c', 'b', 'd'};
        char[] ana = {'a', 'c', 'b', 'd'};
        char[] radu = {'a', 'b', 'b', 'd'};
        System.out.println("Ana == barem: " + (ana == barem));
        System.out.println("Ana corect: " + Arrays.equals(ana, barem));
        System.out.println("Radu corect: " + Arrays.equals(radu, barem));
    }
}

Rezultat

Ana == barem: false
Ana corect: true
Radu corect: false

Exemplul 2: Matrice: equals vs deepEquals

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] a = {{1, 2}, {3, 4}};
        int[][] b = {{1, 2}, {3, 4}};
        System.out.println("equals: " + Arrays.equals(a, b));
        System.out.println("deepEquals: " + Arrays.deepEquals(a, b));
    }
}

Rezultat

equals: false
deepEquals: true

Greșeli frecvente

  • Compari array-uri cu == sau .equals. Rezultatul este false chiar dacă au aceleași valori.
  • Folosești Arrays.equals pe matrice. Folosește deepEquals.

Comenzi înrudite

  • Arrays.toString: toString transformă un array în text de forma [1, 2, 3]; deepToString face același lucru pentru matrice (array-uri de array-uri).
  • List.equals: Două liste sunt egale dacă au aceleași elemente în aceeași ordine, indiferent de clasa lor; hashCode urmează aceeași regulă.
  • Map.equals: Două map-uri sunt egale dacă au exact aceleași perechi cheie → valoare, indiferent de ordine sau de implementare.
  • Arrays: Clasă cu metode statice pentru array-uri: afișare, sortare, căutare, copiere, umplere, comparare și transformare în listă sau stream.