Java에서 두 정수 배열 비교하기

두 배열을 비교하는 코드를 작성하려고 합니다. 첫 번째 배열에는 제가 직접 숫자를 넣었지만 두 번째 배열은 입력 파일에서 숫자를 가져옵니다. 이 배열의 크기는 파일의 첫 번째 숫자에 의해 결정되는 반면 첫 번째 배열은 항상 크기 10입니다. 두 배열의 길이와 숫자는 모두 동일해야 합니다. 제 코드는 아래와 같습니다:

public static void compareArrays(int[] array1, int[] array2) {
    boolean b = false;
    for (int i = 0; i < array2.length; i++) {

        for (int a = 0; a < array1.length; a++) {

            if (array2[i] == array1[a]) {
                b = true;
                System.out.println("true");
            } else {
                b = false;
                System.out.println("False");
                break;
            }
        }
    }       
}
질문에 대한 의견 (16)

내가 보기에 당신은 단지 그것들이 동등한지, 이것이 사실이라면 그냥 이런 식으로 가려고 노력합니다:

boolean areEqual = Arrays.equals(arr1, arr2);

이것이 표준적인 방법입니다.

운영팀, 자바 문서에 따르면 배열도 정렬되어야 동일하게 간주되는 것 같습니다:

두 배열에 동일한 수의 요소가 포함되어 있고 두 배열의 모든 해당 요소 쌍이 동일한 경우 두 배열은 동일한 것으로 간주됩니다. 즉, 두 배열이 동일한 요소를 같은 순서로 포함하는 경우 두 배열은 동일하다고 간주합니다;

그 점을 놓쳐서 죄송합니다.

해설 (3)


배열입니다.equals(ary1,ary2);//는 부울 값을 반환합

편집
당신이 사용할 수 있는배열입니다.deepEquals(ary1,ary2)를 비교2D 배열뿐만 아니라

또한 체크인[이 링크][1]비교를 위한 비교 사이배열입니다.equls(ar1,ar2)배열입니다.deepEquals(ar1,ar2)

https://stackoverflow.com/questions/2721033/java-arrays-equals-returns-false-for-two-dimensional-arrays

2 편집
지 않는 경우에 사용하려면 이러한 라이브러리 방법이 다음을 쉽게 구현할 수 있습니다 당신의 방법은 다음과 같이:


public static boolean ArrayCompare(int[] a, int[] a2) {
    if (a==a2)   // checks for same array reference
        return true;
    if (a==null || a2==null)  // checks for null arrays
        return false;

    int length = a.length;
    if (a2.length != length)  // arrays should be of equal length
        return false;

    for (int i=0; i
해설 (4)
해결책
public static void compareArrays(int[] array1, int[] array2) {
        boolean b = true;
        if (array1 != null && array2 != null){
          if (array1.length != array2.length)
              b = false;
          else
              for (int i = 0; i < array2.length; i++) {
                  if (array2[i] != array1[i]) {
                      b = false;    
                  }                 
            }
        }else{
          b = false;
        }
        System.out.println(b);
    }
해설 (1)

배열의 크기가 같다는 것을 알고 있다면 정렬한 다음 비교하는 것이 더 빠릅니다.

Arrays.sort(array1)
Arrays.sort(array2)
return Arrays.equals(array1, array2)

배열의 데이터 순서를 변경하고 싶지 않다면 먼저 System.arraycopy를 수행하세요.

해설 (2)

None 기존의 답변을 포함하여 비교 측정기,따라서 사용할 수 없습에서 이진 나무 또는 분류를 제공합니다. 그래서 나는'm 냥 떠나이 여기:

public static int compareIntArrays(int[] a, int[] b) {
    if (a == null) {
        return b == null ? 0 : -1;
    }
    if (b == null) {
        return 1;
    }
    int cmp = a.length - b.length;
    if (cmp != 0) {
        return cmp;
    }
    for (int i = 0; i < a.length; i++) {
        cmp = Integer.compare(a[i], b[i]);
        if (cmp != 0) {
            return cmp;
        }
    }
    return 0;
}
해설 (3)

을 확인할 수 있습 배열과 등 Apache CommonsArrayUtils#isEquals()방법입니다.

해설 (7)

'.equals'와 같은 쉬운 것이 있지만 코드에서 실수한 두 가지를 지적하고 싶습니다. 첫 번째: 배열을 살펴볼 때 b 또는 거짓이라고 말합니다. 그런 다음 다시 확인을 시작하는데, 이는 for-루프 때문입니다. 하지만 매번 b에 값을 부여합니다. 따라서 어떤 일이 발생하든 b가 설정되는 값은 항상 마지막 for-루프의 값입니다. 다음에는 부울 b = true, if equal = true, 아무것도 하지 않음, if equal = false, b=false로 설정합니다.

둘째, 이제 array1의 각 값을 array2의 각 값으로 확인하고 있습니다. 제가 올바르게 이해했다면 배열에서 같은 위치에 있는 값만 확인하면 되므로 두 번째 for-루프를 삭제하고 다음과 같이 확인했어야 합니다: if (array2[i] == array1[i]). 그러면 코드가 정상적으로 작동합니다.

코드는 다음과 같이 작동합니다:

public static void compareArrays(int[] array1, int[] array2) {
    boolean b = true;
    for (int i = 0; i < array2.length; i++) {
        if (array2[i] == array1[i]) {
            System.out.println("true");
        } else {
            b = false;
            System.out.println("False");
        }
    } 
    return b;

}

하지만 다른 사람들이 말했듯이 더 쉬울 것입니다: Arrays.equals(ary1,ary2);

해설 (5)

배열의 길이 동일해야 합니다 숫자는 단지 동일한 내내(1 번호에서 배열해야 합 sasme 과)

이를 바탕으로 주석,그 당신은 이미 당신의 알고리즘:

  1. 체크인 경우 두 배열의 길이는 같습니다:

array1.길이==배열 2.길이

  1. 숫자와 동일해야 합 같은 위치에 있:

array1[x]==배열 2[x]

이것을 알고,너를 만들 수 있습니다 이번에는 다음과 같은 코드(이하지 않 Java code,it's 는 알고리즘):


function compareArrays(int[] array1, int[] array2) {

    if (array1 == null) return false
    if (array2 == null) return false

    if array1.length != array2.length then return false

    for i 
해설 (3)

여기에 내가 방법이 유용할 수 있습니다.

public static void compareArrays(int[] array1, int[] array2) {
    if (array1.length != array2.length)
    {
           System.out.println("Not Equal");
    }
    else
    {
        int temp = 0;
        for (int i = 0; i < array2.length; i++) {  //Take any one of the array size
            temp^ = array1[i] ^ array2[i];   //with help of xor operator to find two array are equal or not                 
        }
        if( temp == 0 )
        {
             System.out.println("Equal");
        }
        else{
             System.out.println("Not Equal");
        }
    }
}
해설 (0)

완전성을 위해,당신은 당신이 있어야하는 방법을 확인할 수 있습니다.*배열:

    public static  boolean compareArrays(E[] array1, E[] array2) {
      boolean b = true;
      for (int i = 0; i < array2.length; i++) {
        if (array2[i].equals(array1[i]) ) {// For String Compare
           System.out.println("true");
        } else {
           b = false;
           System.out.println("False");
        }
      } 
      return b;
    }
해설 (1)