두 배열을 비교하는 코드를 작성하려고 합니다. 첫 번째 배열에는 제가 직접 숫자를 넣었지만 두 번째 배열은 입력 파일에서 숫자를 가져옵니다. 이 배열의 크기는 파일의 첫 번째 숫자에 의해 결정되는 반면 첫 번째 배열은 항상 크기 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;
}
}
}
}
내가 보기에 당신은 단지 그것들이 동등한지, 이것이 사실이라면 그냥 이런 식으로 가려고 노력합니다:
boolean areEqual = Arrays.equals(arr1, arr2);
이것이 표준적인 방법입니다.
운영팀, 자바 문서에 따르면 배열도 정렬되어야 동일하게 간주되는 것 같습니다:
두 배열에 동일한 수의 요소가 포함되어 있고 두 배열의 모든 해당 요소 쌍이 동일한 경우 두 배열은 동일한 것으로 간주됩니다. 즉, 두 배열이 동일한 요소를 같은 순서로 포함하는 경우 두 배열은 동일하다고 간주합니다;
그 점을 놓쳐서 죄송합니다.
사배열입니다.equals(ary1,ary2);
//는 부울 값을 반환합
편집
당신이 사용할 수 있는배열입니다.deepEquals(ary1,ary2)
를 비교2D 배열뿐만 아니라
또한 체크인이 링크비교를 위한 비교 사이배열입니다.equls(ar1,ar2)
와배열입니다.deepEquals(ar1,ar2)
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<length; i++) // compare array values
if (a[i] != a2[i])
return false;
return true;
}
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);
}
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;
}
'.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);
배열의 길이 동일해야 합니다 숫자는 단지 동일한 내내(1 번호에서 배열해야 합 sasme 과)
이를 바탕으로 주석,그 당신은 이미 당신의 알고리즘:
array1.길이==배열 2.길이
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 <- 0 to array1.length - 1
if array1[i] != array2[i] return false
return true
}
참고:당신의 기능을 반환해야 합부울
,되지 않는무효화
,그 반환 값이 다른 변수에 그것을 사용할 메시지를 인쇄하려면"true"또"false":
public static void main(String[] args) {
int[] array1;
int[] array2;
//initialize the arrays...
//fill the arrays with items...
//call the compare function
boolean arrayEquality = compareArrays(array1, array2);
if (arrayEquality) {
System.out.println("arrays are equals");
} else {
System.out.println("arrays are not equals");
}
}
여기에 내가 방법이 유용할 수 있습니다.
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");
}
}
}
완전성을 위해,당신은 당신이 있어야하는 방법을 확인할 수 있습니다.*배열:
public static <E> 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;
}