2009-03-31 14 views
0

배열의 값을 비교하는 방법은 무엇입니까?배열의 값을 비교하는 방법은 무엇입니까?

12 개의 요소가 포함 된 배열의 배열이 있습니다. 인덱스 0의 값이 인덱스 2의 값과 같거나 같지 않은지 확인합니다.

이 코드를 시도했지만 제대로 작동하지 않습니다. 이 정말 배열의 경우

if ((list.get(0)==list.get(2) && list.get(1)==list.get(3)) 
{ 
    System.out.println("equal") 
} 
+1

"그것이 작동하는 것 같다 나던"당신은 자세한 내용을 제공해야 :-) 아주 좋은 문제 보고서 아니다 - 어떤 역할을합니까이? 그것은 심지어 컴파일합니까? "평등"을 인쇄하지 않습니까? 등. – paxdiablo

+0

==는 equals (Object)와 다릅니다. –

답변

2
if(list[0] == list[2] && list[1] == list[3]){ 
    System.out.println("equal"); 
} 

가 문자열 인 경우 :

if(list[0].equals(list[2]) && list[1].equals(list[3])){ 
    System.out.println("equal"); 
} 
8

은, 당신이 원하는 : 배열이 참조 형식 인 경우, 즉 참조 정체성보다는 어떤지를 비교 있다는

if (list[0] == list[2] && list[1] == list[3]) 

참고. 원하는 것일 수도 있습니다 :

if (list[0].equals(list[2])) && list[1].equals(list[3])) 

값이 null이면 값이 커야합니다. 이에 대처하기 위해 도우미 메서드를 할 수 있습니다 : 다음

public static objectsEqual(Object o1, Object o2) 
{ 
    if (o1 == o2) 
    { 
     return true; 
    } 
    if (o1 == null || o2 == null) 
    { 
     return false; 
    } 
    return o1.equals(o2); 
} 

:

if (objectsEqual(list[0], list[2]) && objectsEqual(list[1], list[3])) 

당신이 정말로 후 여전히 list.get(x)를 사용하여 보유하고 위의 모든 대신 배열의 ArrayList을 가지고 있다면 각 위치에 list[x] 대신.

+0

감사합니다. Jon. 그게 정말 도움이됩니다. 그러나 평등을 찾는 대신 요소가 동일하지 않은지 확인하고 싶다면 어떻게해야할까요? (objectEqual (list [0], list [2]) && objectsEqual (list [1], list [3])))) – Jessy

0

개체 자체가 아닌 개체 참조를 비교하고 있습니다. 메소드 호출을 사용해야합니다. 모든 클래스는 루트 Object 클래스 equals() 상속, 그래서 작동 할 수 있습니다 :

if(list.get(0).equals(list.get(2)) && list.get(1).equals(list.get(3))) 
{ 
    System.out.println("equal"); 
} 

This article 가능한 다른 비교 방법을 잘 요약 한 것 같다.

관련 문제