난이 (세 또는 그 이상)의 여러 목록처럼 :여러 목록에없는 모든 요소를 받기
[a, b, c, d, a];
[b, d, e, c, a];
[c, f, a];
이 지금은 하나의 목록 또는 여러 목록에 중 모든 요소를 원하지만하지 모든 목록에! 예에 대한 결과는 전술 같아야
[b, d, e, f];
상관 솔루션? 감사합니다.
난이 (세 또는 그 이상)의 여러 목록처럼 :여러 목록에없는 모든 요소를 받기
[a, b, c, d, a];
[b, d, e, c, a];
[c, f, a];
이 지금은 하나의 목록 또는 여러 목록에 중 모든 요소를 원하지만하지 모든 목록에! 예에 대한 결과는 전술 같아야
[b, d, e, f];
상관 솔루션? 감사합니다.
당신은 모든 목록의 항목을 찾을 수있는 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);
}
사용 java.util.List
, 당신은 배열이 Arrays.asList(arr);
을 사용하고 list.contains(el);
목록 중 일부는 현재 요소가 포함되어 있는지 여부를 확인해야하는 경우 ...
지금까지 가지고있는 코드의 문제점은 무엇입니까? –
힌트,'removeAll' – user902383
동일한 요소를 같은 목록에 여러 번 나타날 수 있습니까? 어쨌든, 각 원소를 발견 한리스트의 수에 맵핑하는'Map'을 원할 것입니다. – ajb