2013-12-11 1 views
-1

난이 (세 또는 그 이상)의 여러 목록처럼 :여러 목록에없는 모든 요소를 ​​받기

[a, b, c, d, a]; 
[b, d, e, c, a]; 
[c, f, a]; 

이 지금은 하나의 목록 또는 여러 목록에 중 모든 요소를 ​​원하지만하지 모든 목록에! 예에 대한 결과는 전술 같아야

[b, d, e, f]; 

상관 솔루션? 감사합니다.

+2

지금까지 가지고있는 코드의 문제점은 무엇입니까? –

+0

힌트,'removeAll' – user902383

+0

동일한 요소를 같은 목록에 여러 번 나타날 수 있습니까? 어쨌든, 각 원소를 발견 한리스트의 수에 맵핑하는'Map'을 원할 것입니다. – ajb

답변

0

당신은 모든 목록의 항목을 찾을 수있는 retainAll 방법을 찾고있다. 나머지는 단순한 콜렉션 일뿐입니다.

모든 목록에 항목 목록이 있으면 Set (중복을 버리지 않도록)을 사용하여 모든 목록의 모든 요소를 ​​수집 한 다음 모든 목록에 나타나는 항목 목록을 사용하여 removeAll을 사용하십시오.

public void test() { 
    List<String> aList = new ArrayList<>(Arrays.asList("a", "b", "c", "d", "a")); 
    List<String> bList = new ArrayList<>(Arrays.asList("b", "d", "e", "c", "a")); 
    List<String> cList = new ArrayList<>(Arrays.asList("c", "f", "a")); 
    // Not in all lists. 
    List<String> inAll = new ArrayList<>(aList); 
    inAll.retainAll(bList); 
    inAll.retainAll(cList); 
    // Unique results - all items in all lists. 
    Set<String> result = new HashSet<>(aList); 
    result.addAll(bList); 
    result.addAll(cList); 
    // But nothing that is in all lists. 
    result.removeAll(inAll); 
    System.out.println(result); 
} 
0

사용 java.util.List, 당신은 배열이 Arrays.asList(arr);을 사용하고 list.contains(el); 목록 중 일부는 현재 요소가 포함되어 있는지 여부를 확인해야하는 경우 ...

관련 문제