2011-03-12 6 views
0

List<Aclass> A1과 List<Bclass> b1과 같은 두 개의 클래스 목록이 있으며 두 목록에는 공통된 필드가 하나 있습니다. 그래서이 필드를 사용하여 두 목록을 비교해야합니까? 누구든지 나를 도울 수 있습니까? 해당 클래스 목록이 다른지 확인하십시오.자바에서 두 개의 다른 목록 객체를 비교하는 방법은 무엇입니까?

+0

당신은 하나 개의 필드가 다른 무엇을 의미합니까 그 commonField 필드에 의해 분류되어야 하는가? 'name'과 같은 속성이 다른'Person'과 같은 객체의 목록입니까? 질문 할 때 더 명확하게 노력하십시오. – adarshr

+1

그리고 '비교'란 무엇입니까? 목록 등을 정렬하고 싶습니까? – adarshr

+2

그리고 게시물에 서명을 사용하지 마십시오. 이미 게시물 아래에 있습니다. 감사. –

답변

0

지갑 the javadoc for List.equals()는 :

두 개의리스트가 같은 순서로 같은 요소를 포함하는 경우와 동일하게 정의된다.

여기에서는 equals 메서드를 사용할 수 있으며 물론 두 개의 목록을 선언 한 제네릭 형식은 무시합니다. AbstractList의 equals 메소드 (ArrayList와 다른리스트 클래스의 묶음이 구현)는 두리스트를 반복하고 각 요소에 대해 equals를 순서대로 호출합니다. 한 번 완료되면 어느 한리스트에 항목이 남아 있지 않은지 확인합니다.

이 모든, 당신은 날씨 두 목록이 같은 요소를 포함하고 결정하기 위해 equals 메소드를 호출 할 수 있습니다 감안할 때 : 나는 완전히 질문을 이해 확실하지 않다

List<Aclass> A1 = new ArrayList<Aclass>(); 
List<Bclass> b1 = new ArrayList<Bclass>(); 

// getElement returns a private field that can be cast to both Aclass and Bclass 
A1.add(getElement()); 
b1.add(getElement()); 

if (A1.equals(b1)) { 
    System.out.println("two lists are equal"); 
} 
+0

"huGe"를 원하셨습니까? –

+0

@ Yasir yea 나는 그 순간에 무슨 일이 일어나고 있는지 모르겠다. 내 키보드가 공평하지 않다. – krock

+0

일부 터치 타이핑을 배우고 많은 오타를 저장합니다 ;-) –

5

을하지만 당신은 요구하고 이런 식으로?

public boolean compare (List<AClass> listA, List<BClass> listB) { 
    if (listA.size() != listB.size() return false; 
    for (int i=0; i<listA.size(); i++) { 
     AClass aClass == (AClass) listA.get(i); 
     BClass bClass == (BClass) listB.get(i); 
     if (aClass.commonField != bClass.commonField) return false; 
    } 
    return true; 
} 

두 목록

+0

감사합니다. Aleadam 나는 해결책에 아주 가깝다고 생각합니다 !!! 당신은 내 문제가 정확하게 발생했습니다 – vinod

+0

@vinod : 해결책이라고 생각되면 게시물 옆에있는 체크 표시를 클릭하여 해결 방법을 표시하십시오. –

+0

나는 몇 가지 오타를 편집했습니다. 그러한 짧고 간단한 방법은 목록이 정렬 된 경우에만 작동한다는 것을 기억하십시오. 클래스 필드가 공개되면 null이 아닌지 확인해야합니다. 더 나은 옵션은 AClass와 BClass에 public 메소드 인 compareField()를 만드는 것이다. – Aleadam

관련 문제