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.