어제 오늘 내일

[Java 기초] Arrays.deepEquals()로 다차원 배열 비교하기 본문

IT/Java

[Java 기초] Arrays.deepEquals()로 다차원 배열 비교하기

hi.anna 2025. 8. 30. 12:05

배열을 비교할 때 자주 사용하는 Arrays.equals()1차원 배열에는 잘 동작하지만, 2차원 이상 다차원 배열에서는 원하는 결과를 주지 않습니다.
이럴 때 사용하는 메서드가 바로 Arrays.deepEquals() 입니다.

 

1. Arrays.equals()의 한계

먼저 Arrays.equals()를 다차원 배열에 사용해보겠습니다.

import java.util.Arrays;

public class DeepEqualsExample1 {
    public static void main(String[] args) {
        String[][] arr1 = {{"A", "B"}, {"C", "D"}};
        String[][] arr2 = {{"A", "B"}, {"C", "D"}};

        System.out.println(Arrays.equals(arr1, arr2));
    }
}

실행 결과

false

👉 배열 안의 내용은 같지만, equals()는 참조(주소값)만 비교하기 때문에 false가 나옵니다.

 

2. Arrays.deepEquals() 사용하기

이제 Arrays.deepEquals()를 사용해봅시다.

import java.util.Arrays;

public class DeepEqualsExample2 {
    public static void main(String[] args) {
        String[][] arr1 = {{"A", "B"}, {"C", "D"}};
        String[][] arr2 = {{"A", "B"}, {"C", "D"}};

        System.out.println(Arrays.deepEquals(arr1, arr2));
    }
}

실행 결과

true

👉 내부 요소까지 재귀적으로 비교하기 때문에, 값이 같으면 true를 반환합니다.

 

3. 다차원 기본형 배열 비교

기본형 배열의 다차원 배열도 deepEquals()로 비교할 수 있습니다.

import java.util.Arrays;

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

        System.out.println(Arrays.deepEquals(arr1, arr2));
    }
}

실행 결과

true

👉 equals()라면 false였겠지만, deepEquals()는 내부 요소를 비교하기 때문에 true.

 

4. null 값이 포함된 경우

deepEquals()는 null 값도 올바르게 처리합니다.

import java.util.Arrays;

public class DeepEqualsExample4 {
    public static void main(String[] args) {
        String[][] arr1 = {{"A", null}, {"C", "D"}};
        String[][] arr2 = {{"A", null}, {"C", "D"}};

        System.out.println(Arrays.deepEquals(arr1, arr2));
    }
}

실행 결과

true

 

5. equals() vs deepEquals() 차이 요약

메서드 비교 범위 다차원 배열 지원 결과 예시
Arrays.equals() 1차원 배열의 원소만 ❌ (참조 비교) false
Arrays.deepEquals() 배열 안의 배열까지 재귀적으로 비교 true

 

6. 정리

  • Arrays.equals() → 1차원 배열 비교용
  • Arrays.deepEquals() → 다차원 배열을 값 기준으로 비교
  • 참조가 아닌 내용 비교가 필요할 때 꼭 사용해야 함

👉 다차원 배열 비교는 equals() 대신 deepEquals()를 써야 값이 같은지 제대로 확인할 수 있다!

 

 

반응형
Comments