Java/11. 기본 API 클래스
★Day 16 : Arrays 클래스 - equals(), deepEquals() : 배열 항목 비교★
pancakemaker
2021. 11. 9. 11:29
Arrays.equals() : 1차 항목의 값만 비교 즉, 1차 배열의 값 비교
Arrays.deepEquals() : 중첩된 배열의 항목까지 비교 즉, 2차 배열의 값 비교
※ 얕은 복제
※ 깊은 복제
배열 비교
package sec11.exam01_arrays;
import java.lang.reflect.Array;
import java.util.Arrays;
public class EqualsExample {
public static void main(String[] args) {
int[][] original = { {1,2}, {3,4} }; //다차원배열
//얕은 복사 후 비교
System.out.println("[얕은 복제 후 비교]");
int[][] cloned1 = Arrays.copyOf(original, original.length); //cloned1 : 복제 후 생성된 배열
System.out.println("배열 번지 비교: " + original.equals(cloned1)); //일반 equals() : 번지만 비교
System.out.println("1차 배열 항목값 비교: " + Arrays.equals(original, cloned1)); //Arrays.equals() : 배열의 항목값(1차 배열) 비교
System.out.println("중첩 배열 항목값 비교: " + Arrays.deepEquals(original, cloned1));//Arrays.deepEquals() : 배열의 항목값 + 중첩된 배열(2차 배열)의 항목 비교
//깊은 복사 후 비교
System.out.println("[깊은 복제 후 비교]");
int[][] cloned2 = Arrays.copyOf(original, original.length); //cloned2 : 복제 후 생성된 배열
cloned2[0] = Arrays.copyOf(original[0], original[0].length); //original 배열의 0번 index 값을 cloned2 배열의 0번 index에 복제
cloned2[1] = Arrays.copyOf(original[1], original[1].length); //original 배열의 1번 index 값을 cloned2 배열의 1번 index에 복제
System.out.println("배열 번지 비교: " + original.equals(cloned2)); //일반 equals() : 번지만 비교
System.out.println("1차 배열 항목값 비교: " + Arrays.equals(original, cloned2)); //Arrays.equals() : 배열의 항목값(1차 배열) 비교
System.out.println("중첩 배열 항목값 비교: " + Arrays.deepEquals(original, cloned2));//Arrays.deepEquals() : 배열의 항목값 + 중첩된 배열(2차 배열)의 항목 비교
}
}
[얕은 복제 후 비교]
배열 번지 비교: false
1차 배열 항목값 비교: true
중첩 배열 항목값 비교: true
[깊은 복제 후 비교]
배열 번지 비교: false
1차 배열 항목값 비교: false
중첩 배열 항목값 비교: true