logo

Java에서 두 배열을 비교하는 방법은 무엇입니까?

Java에서는 다음을 수행할 수 있습니다. 두 배열 비교 배열의 각 요소를 비교하여 자바 배열 클래스는 다음 작업에 사용되는 두 가지 미리 정의된 메서드를 제공합니다. Java에서 두 배열 비교 .

이 섹션에서는 다음 내용을 학습합니다. 두 배열을 비교하는 방법 사용하여 배열.equals() 방법과 배열.deepEquals() 방법. 이와 함께 우리는 또한 배울 것입니다 두 어레이 간의 심층 비교를 수행하는 방법 적절한 예를 들어요.

다음과 같은 경우 두 배열이 동일합니다.

  • 그들은 같은 유형입니다.
  • 그들은 동일한 수의 요소를 가지고 있습니다.
  • 두 배열의 해당 요소 쌍은 동일해야 합니다.
  • 요소의 순서는 동일해야 합니다.
  • 두 개의 배열 참조가 null인 경우 동일합니다.

주제로 넘어가기 전에 먼저 다음 예를 살펴보고 결과를 추측해 보세요.

ArrayEqualsExample1.java

문자열 하위 문자열
 public class ArrayEqualsExample1 { public static void main (String[] args) { //defining arrays to be compare int[] a1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; int[] a2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; //comparing references using == operator //works the same as a1.equals(a2) if (a1 == a2) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

산출:

 Arrays are not equal. 

위의 예에서 a1과 a2는 서로 다른 두 개체의 두 참조입니다. 두 참조 변수를 비교하면 출력이 표시됩니다. 배열이 동일하지 않습니다. 두 배열의 길이는 동일하고 요소도 동일합니다. 같음(==) 연산자가 이를 객체로 비교하기 때문에 원하는 출력을 얻지 못합니다.

이제 두 배열을 비교할 수 있는 옵션만 남았습니다. 배열의 내용(요소)을 비교합니다. . 배열 내용을 비교하는 방법을 살펴보겠습니다.

요소들을 하나씩 비교해보면 좋을 것 같습니다. Java 배열의 내용을 비교하려면 배열 클래스는 두 배열을 비교하기 위해 다음 두 가지 방법을 제공합니다.

선택 정렬 자바
  • equals() 메서드
  • deepEquals() 메서드

Arrays.equals() 메서드

자바 배열 수업은 같음() 두 배열을 비교하는 방법. 배열의 각 값을 반복하고 equals() 메서드를 사용하여 요소를 비교합니다.

통사론:

 public static boolean equals(int[] a1, int[] a2) 

비교할 두 배열 a1과 a2를 구문 분석합니다. 이 메서드는 배열이 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 그만큼 배열 클래스 다양한 기본 유형에 대한 오버로드된 equals() 메소드 목록과 객체 유형에 대한 메소드 목록이 있습니다.

참고: 객체 배열을 사용하는 동안 equals() 메서드를 재정의하는 것을 잊지 마세요. 그렇지 않으면 Object 클래스의 equals() 메소드에 의해 반환된 출력을 얻게 됩니다.

ArrayEqualsExample2.java

 import java.util.Arrays; public class ArrayEqualsExample2 { public static void main (String[] args) { //defining array to compare int[] array1 = new int[] {'a', 'b', 'c', 'd', 'e'}; int[] array2 = new int[] {'a', 'b', 'c', 'd', 'e'}; //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

산출:

싱글턴 디자인 패턴 자바
 Arrays are equal. 

또 다른 예를 살펴보겠습니다.

ArrayEqualsExample3.java

 import java.util.Arrays; public class ArrayEqualsExample3 { public static void main (String[] args) { //defining arrays to compare int[] array1 = new int [] {21, 32, 36, 47}; int[] array2 = new int [] {11, 22, 33, 44}; int[] array3 = new int [] {21, 32, 36, 47}; System.out.println('Are array1 and array2 equal?' + Arrays.equals(array1, array2)); System.out.println('Are array1 and array3 equal?' + Arrays.equals(array1, array3)); } } 

산출:

 Are array1 and array2 equal? false Are array1 and array3 equal? true 

우리는 배열.equals() 메서드는 배열의 요소를 비교합니다. 여기서, 배열에 중첩된 배열이 있거나 다른 객체를 참조하지만 동일한 값을 갖는 다른 참조가 있으면 어떻게 되는지에 대한 질문이 발생합니다.

다음 예를 통해 이해해보자.

execlp

ArrayEqualsExample4.java

 import java.util.Arrays; public class ArrayEqualsExample4 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

산출:

 Arrays are not equal. 

위의 예에서, equals() 메소드는 심층적인 비교를 수행할 수 없다는 것을 알 수 있습니다. 이 문제를 해결하기 위해 Java Arrays 클래스는 두 배열을 심층적으로 비교하는 또 다른 메서드 deepEquals()를 제공합니다.

Arrays.deepEquals() 메서드

자바 배열 클래스는 또 다른 방법을 제공합니다 deepEquals() 배열을 깊이 비교합니다. 여기서 심층 비교는 임의 깊이의 두 중첩 배열을 비교할 수 있음을 의미합니다. 두 배열 객체 참조 e1과 e2는 다음 조건 중 하나를 충족하는 경우 완전히 동일합니다.

블록 자바를 잡아보세요
  • e1=e2
  • 같음(e2)은 true를 반환합니다.
  • e1과 e2가 모두 동일한 기본 유형인 경우 Arrays.equals(e1, e2) 메서드의 오버로드는 true를 반환합니다.
  • e1과 e2가 모두 객체 참조 유형의 배열인 경우 Arrays.deepEquals(e1, e2) 메서드는 true를 반환합니다.

통사론:

 public static boolean deepEquals(Object[] a1, Object[] a2) 

이 메서드는 비교할 두 배열 a1과 a2를 구문 분석합니다. 두 배열이 완전히 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

프로그램을 만들고 다음을 사용하여 두 배열을 심층적으로 비교해 보겠습니다. deepEquals() Arrays 클래스의 메소드

ArrayEqualsExample5.java

 import java.util.Arrays; public class ArrayEqualsExample5 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.deepEquals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

산출:

 Arrays are equal.