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;
}
}
}
}
22
10
내가 보기에 당신은 단지 그것들이 동등한지, 이것이 사실이라면 그냥 이런 식으로 가려고 노력합니다:
이것이 표준적인 방법입니다.
운영팀, 자바 문서에 따르면 배열도 정렬되어야 동일하게 간주되는 것 같습니다:
두 배열에 동일한 수의 요소가 포함되어 있고 두 배열의 모든 해당 요소 쌍이 동일한 경우 두 배열은 동일한 것으로 간주됩니다. 즉, 두 배열이 동일한 요소를 같은 순서로 포함하는 경우 두 배열은 동일하다고 간주합니다;
그 점을 놓쳐서 죄송합니다.
사
배열입니다.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 편집
지 않는 경우에 사용하려면 이러한 라이브러리 방법이 다음을 쉽게 구현할 수 있습니다 당신의 방법은 다음과 같이:
배열의 크기가 같다는 것을 알고 있다면 정렬한 다음 비교하는 것이 더 빠릅니다.
배열의 데이터 순서를 변경하고 싶지 않다면 먼저
System.arraycopy
를 수행하세요.None 기존의 답변을 포함하여 비교 측정기,따라서 사용할 수 없습에서 이진 나무 또는 분류를 제공합니다. 그래서 나는'm 냥 떠나이 여기:
을 확인할 수 있습 배열과 등 Apache CommonsArrayUtils#isEquals()방법입니다.
'.equals'와 같은 쉬운 것이 있지만 코드에서 실수한 두 가지를 지적하고 싶습니다. 첫 번째: 배열을 살펴볼 때
b
가참
또는거짓
이라고 말합니다. 그런 다음 다시 확인을 시작하는데, 이는 for-루프 때문입니다. 하지만 매번b
에 값을 부여합니다. 따라서 어떤 일이 발생하든b
가 설정되는 값은 항상 마지막 for-루프의 값입니다. 다음에는부울 b = true
,if equal = true
, 아무것도 하지 않음,if equal = false
,b=false
로 설정합니다.둘째, 이제
array1
의 각 값을array2
의 각 값으로 확인하고 있습니다. 제가 올바르게 이해했다면 배열에서 같은 위치에 있는 값만 확인하면 되므로 두 번째 for-루프를 삭제하고 다음과 같이 확인했어야 합니다:if (array2[i] == array1[i])
. 그러면 코드가 정상적으로 작동합니다.코드는 다음과 같이 작동합니다:
}
하지만 다른 사람들이 말했듯이 더 쉬울 것입니다: Arrays.equals(ary1,ary2);
이를 바탕으로 주석,그 당신은 이미 당신의 알고리즘:
array1.길이==배열 2.길이
array1[x]==배열 2[x]
이것을 알고,너를 만들 수 있습니다 이번에는 다음과 같은 코드(이하지 않 Java code,it's 는 알고리즘):
여기에 내가 방법이 유용할 수 있습니다.
완전성을 위해,당신은 당신이 있어야하는 방법을 확인할 수 있습니다.*배열: