2017-04-30 5 views
0

나는 Student라는 클래스가 있습니다. 마리아, 알렉스, 로라, 블라드, 로렌, 캐서린 : 또한 나는 학생 A와 학생 B를두 객체의 ArrayLists 비교

명의 학생들 수있을 두 배열 목록을 가지고있다. 마리아, 알렉스

학생들 저장 프로 적절한 ID와 이름이 있습니다

학생 B는 일부 학생입니다. 그러나 학생 B는 이름 만 저장하고 하드 코드 된 ID를 저장했습니다.

나는이 두 가지 목록을 분리 이제 다음을 수행합니다 :

마리아의 형태로 배열 A는 학생증이있는 경우 : 배열 B에서 2427

마리아 같은 학생 ID를 받아야합니다.

도와 주실 수 있습니까?

//array lists of students a and b 
public void common(){ 

    ArrayList<ArrayList<Student>> lists = new ArrayList<ArrayList<Student>>(); 
    lists.add(a); 
    lists.add(b); 

    System.out.println(getCommonElements(lists)); 
    for (int i = 0; i < lists.size(); i++) { 
     aa = lists.get(0); 
     bb = lists.get(1); 

    } 
    System.out.println(aa); 
    System.out.println(bb); 
} 


public static <T> Set<T> getCommonElements(Collection<? extends Collection<T>> collections) { 

    Set<T> common = new LinkedHashSet<T>(); 
    if (!collections.isEmpty()) { 
     Iterator<? extends Collection<T>> iterator = collections.iterator(); 
     common.addAll(iterator.next()); 
     while (iterator.hasNext()) { 
      common.retainAll(iterator.next()); 
     } 
    } 
    return common; 
} 

감사합니다. 질문이 거의 작동하지 않는 이유는 무엇입니까?

for (int i = 0; i < a.size(); i++) { 
    for (int j = 0; j < b.size(); j++) { 

     if(a.get(i).getName().equals(b.get(j).getName())){ 
       //does not go there at all 
    } 
    } 
} 
+2

주로 숙제를 버린 것처럼 보이며 선생님이 채우기를 기대하는 "템플릿"코드입니다. 알다시피, 우리는 "당신이 저를 도울 수 있습니까?" – GhostCat

+0

A부터 B까지 해당 이름으로 ID를 채우려고합니까? – vijayraj34

+0

예. 문제는 다음과 같습니다. 이미 A에 대한 모든 적절한 ID가 있습니다. 이제이 ID를 해당 이름으로 가져 와서 B ArrayList로 설정해야합니다. – Julia

답변

0

당신의 반복은 당신이하고자하는 것을하지 않습니다. 인덱스 'i'의 A 요소와 인덱스 'j'의 B의 요소 대신 두 배열의 인덱스 'i'의 요소를 계속해서 비교하고 있습니다.

당신이 비교 한 각 학생의 이름을 인쇄한다면 그것은 분명해야합니다.

+0

예, 죄송합니다. 내 게시물을 편집했습니다. 나는 실제로 i와 j를 비교하고 있었다. 그래서 일을하고 싶지 않고 왜 그런지 모르겠다. – Julia