2013-03-29 2 views
3

두 개의 ArrayList ar1과 ar2가 있습니다.리스트 2 개를 조합하는 방법은 무엇입니까?

ArrayList ar1은 ID, NAME 및 STATUS 속성을 가진 각 객체가있는 객체 목록을 포함합니다. ArrayList ar2은 ID, NAME 및 SUBJECT 속성을 가진 각 객체가있는 객체 목록을 포함합니다. ar1과 ar2는 모두 같은 크기입니다.

두 목록을 새 목록 ar3으로 병합 할 수있는 방법이 있습니까? 여기에는 ID, NAME, STATUS 및 SUBJECT 속성을 가진 각 개체가있는 개체 목록이 포함되어 있습니까?

업데이트 : ID와 NAME은 두 목록에서 동일합니다.

+1

두 목록을 반복하고 세 번째를 만드는 코드를 적어 두어야합니다. –

+0

1. 좋은'hashcode()'와'equals'를 커스텀 객체에 추가하십시오. 2.'addAll()'을 사용하여'HashSet'에 둘다 넣으십시오. 3. ???? 4 Profit – jn1kk

+0

타사 라이브러리 사용에 제한이 있습니까? – Jabir

답변

2

첫 번째 목록의 모든 요소를지도에 저장하고 두 번째 실행시지도 값을 업데이트하는 것이 좋습니다. 이것은 두리스트 모두 id + name의 관점에서 "같은"항목을 포함하는 경우에만 작동합니다. 그렇지 않은 경우 null 체크를 추가해야합니다.

5
public static void main(String[] args) throws Exception { 

    List<String> list1 = new ArrayList<String>(Arrays.asList("A", "B", "C")); 
    List<String> list2 = new ArrayList<String>(Arrays.asList("B", "C", "D", 
      "E", "F")); 
    List<String> result = new ArrayList<String>(); 
    result = union(list1, list2); 

    System.out.println(result); 
} 

public static List<String> union(List<String> list1, List<String> list2) { 
    HashSet<String> set = new HashSet<String>(); 

    set.addAll(list1); 
    set.addAll(list2); 

    return new ArrayList<String>(set); 
} 

출력 : 내가 제대로 이해하면

[D, E, F, A, B, C] 
+0

목록의 오브젝트는 다른 유형입니다. –

+0

@MikeRylander 예, 질문하기 전에는 두 목록을 결합하는 방법에 관한 것입니다. –

1

그래서, 당신은 A의 목록과 같은 크기의 B의 목록을 가지고, 당신은 C의 목록을 할 위치

: n 번째 요소는리스트 a의 n 번째 요소 목록 B.

음의 n 번째 요소의 조합이다, 먼저 당신은 당신의 노동 조합 클래스를 정의해야

그런 다음 반복자를 사용할 수 있습니다

Iterator<A> aIterator = aList.iterator(); 
Iterator<B> bIterator = bList.iterator(); 
List<C> cList = new ArrayList(aList.size()); 
while (aIterator.hasNext() && bIterator.hasNext()) { 
    A a = aIterator.next(); 
    B b = bIterator.next(); 
    cList.add(new C(a, b)); 
} 
+0

중복 객체를 검사하지 않습니다. –

+1

질문을 오해하지 않는 한, 필요가 없습니다. –

0

는 비교기 C와 검색 기능을 사용하십시오. 그래서 중고 장비 구매의 모든 요소에 대해 다음 당신은 당신의 새로운 객체를 프레임 listB의 요소를 발견하고 여기서 listc에 있음을

를 추가

if(obja.id==objb.id & obja.name=objb.name) return (a==b); 

을 다음과 같은

하는 비교기를 정의합니다.

관련 문제