0
0
JavaHow-ToBeginner · 3 min read

How to Compare Two Arrays in Java: Simple Methods Explained

To compare two arrays in Java, use Arrays.equals(array1, array2) for simple arrays or Arrays.deepEquals(array1, array2) for nested arrays. These methods check if arrays have the same length and elements in the same order.
📐

Syntax

Arrays.equals(array1, array2) compares two arrays element by element for equality.

Arrays.deepEquals(array1, array2) compares nested arrays recursively.

Both methods return true if arrays are equal, otherwise false.

java
import java.util.Arrays;

boolean result = Arrays.equals(array1, array2);
boolean deepResult = Arrays.deepEquals(array1, array2);
💻

Example

This example shows how to compare two simple integer arrays and two nested arrays using Arrays.equals and Arrays.deepEquals.

java
import java.util.Arrays;

public class CompareArraysExample {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 2, 3};
        int[] arr3 = {3, 2, 1};

        System.out.println("arr1 equals arr2: " + Arrays.equals(arr1, arr2));
        System.out.println("arr1 equals arr3: " + Arrays.equals(arr1, arr3));

        int[][] nestedArr1 = {{1, 2}, {3, 4}};
        int[][] nestedArr2 = {{1, 2}, {3, 4}};
        int[][] nestedArr3 = {{1, 2}, {4, 3}};

        System.out.println("nestedArr1 deep equals nestedArr2: " + Arrays.deepEquals(nestedArr1, nestedArr2));
        System.out.println("nestedArr1 deep equals nestedArr3: " + Arrays.deepEquals(nestedArr1, nestedArr3));
    }
}
Output
arr1 equals arr2: true arr1 equals arr3: false nestedArr1 deep equals nestedArr2: true nestedArr1 deep equals nestedArr3: false
⚠️

Common Pitfalls

Using == to compare arrays checks if they are the same object, not if their contents are equal. This often leads to unexpected false results.

Also, Arrays.equals does not work correctly for nested arrays; use Arrays.deepEquals instead.

java
import java.util.Arrays;

public class WrongComparison {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};

        // Wrong way: compares references
        System.out.println("Using == : " + (a == b));

        // Right way: compares contents
        System.out.println("Using Arrays.equals : " + Arrays.equals(a, b));

        int[][] nestedA = {{1, 2}};
        int[][] nestedB = {{1, 2}};

        // Wrong way for nested arrays
        System.out.println("Using Arrays.equals on nested arrays: " + Arrays.equals(nestedA, nestedB));

        // Right way for nested arrays
        System.out.println("Using Arrays.deepEquals on nested arrays: " + Arrays.deepEquals(nestedA, nestedB));
    }
}
Output
Using == : false Using Arrays.equals : true Using Arrays.equals on nested arrays: false Using Arrays.deepEquals on nested arrays: true
📊

Quick Reference

  • Arrays.equals(array1, array2): Use for simple arrays to check if elements and order match.
  • Arrays.deepEquals(array1, array2): Use for nested or multi-dimensional arrays.
  • Do not use == to compare arrays because it checks reference equality, not content.

Key Takeaways

Use Arrays.equals() to compare simple arrays by content and order.
Use Arrays.deepEquals() for comparing nested or multi-dimensional arrays.
Never use == to compare arrays because it checks if they are the same object.
Arrays.equals() returns false if array lengths differ or elements differ in order.
For custom comparison logic, consider looping through arrays manually.